first commit
This commit is contained in:
commit
aaf40315c8
15 changed files with 17524 additions and 0 deletions
143
debug.h
Normal file
143
debug.h
Normal file
|
|
@ -0,0 +1,143 @@
|
|||
/***************************************************************/
|
||||
void d_swap(double *a, double *b)
|
||||
{
|
||||
register double tmp;
|
||||
tmp = *a; *a = *b; *b = tmp;
|
||||
}
|
||||
|
||||
void i_swap(int *a, int *b)
|
||||
{
|
||||
register int tmp;
|
||||
tmp = *a; *a = *b; *b = tmp;
|
||||
}
|
||||
/***************************************************************/
|
||||
|
||||
/***************************************************************/
|
||||
void my_sort(int l, int r, double *arr, int *ind)
|
||||
{
|
||||
|
||||
int i, j, cikl;
|
||||
double tmp;
|
||||
|
||||
i = l; j = r;
|
||||
tmp = arr[(l+r)/2];
|
||||
|
||||
cikl = 1;
|
||||
|
||||
while (cikl)
|
||||
{
|
||||
while (arr[i]<tmp) i++;
|
||||
while (tmp<arr[j]) j--;
|
||||
|
||||
if (i<=j)
|
||||
{
|
||||
d_swap(&arr[i],&arr[j]);
|
||||
i_swap(&ind[i],&ind[j]);
|
||||
i++; j--;
|
||||
}
|
||||
else
|
||||
{
|
||||
cikl = 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (l<j) my_sort(l, j, arr, ind);
|
||||
if (i<r) my_sort(i, r, arr, ind);
|
||||
}
|
||||
/***************************************************************/
|
||||
|
||||
/***************************************************************/
|
||||
double my_select(int n_1, int n_2, int k, double *arr, int *ind)
|
||||
{
|
||||
|
||||
int i, ir, j, l, mid, a_ind;
|
||||
double a;
|
||||
|
||||
l = n_1;
|
||||
ir = n_2;
|
||||
|
||||
for(;;)
|
||||
{
|
||||
|
||||
if (ir <= l+1)
|
||||
{
|
||||
|
||||
if (ir == l+1 && arr[ir] < arr[l])
|
||||
{
|
||||
d_swap(&arr[l],&arr[ir]);
|
||||
i_swap(&ind[l],&ind[ir]);
|
||||
}
|
||||
|
||||
return(arr[k]);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
mid=(l+ir) >> 1;
|
||||
|
||||
d_swap(&arr[mid],&arr[l+1]);
|
||||
i_swap(&ind[mid],&ind[l+1]);
|
||||
|
||||
if (arr[l+1] > arr[ir])
|
||||
{
|
||||
d_swap(&arr[l+1],&arr[ir]);
|
||||
i_swap(&ind[l+1],&ind[ir]);
|
||||
}
|
||||
|
||||
if (arr[l] > arr[ir])
|
||||
{
|
||||
d_swap(&arr[l],&arr[ir]);
|
||||
i_swap(&ind[l],&ind[ir]);
|
||||
}
|
||||
|
||||
if (arr[l+1] > arr[l])
|
||||
{
|
||||
d_swap(&arr[l+1],&arr[l]);
|
||||
i_swap(&ind[l+1],&ind[l]);
|
||||
}
|
||||
|
||||
i = l+1;
|
||||
j = ir;
|
||||
a = arr[l];
|
||||
a_ind = ind[l];
|
||||
|
||||
for (;;)
|
||||
{
|
||||
do i++; while (arr[i] < a);
|
||||
do j--; while (arr[j] > a);
|
||||
if (j < i) break;
|
||||
d_swap(&arr[i],&arr[j]);
|
||||
i_swap(&ind[i],&ind[j]);
|
||||
}
|
||||
|
||||
arr[l] = arr[j];
|
||||
ind[l] = ind[j];
|
||||
arr[j] = a;
|
||||
ind[j] = a_ind;
|
||||
if (j >= k) ir = j-1;
|
||||
if (j <= k) l = i;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
/***************************************************************/
|
||||
|
||||
/***************************************************************/
|
||||
/*
|
||||
double lagrange_radius(double percent)
|
||||
{
|
||||
int Nb;
|
||||
double tmp;
|
||||
|
||||
Nb = (int)(percent * N);
|
||||
|
||||
my_sort(0, N-1, d, ind);
|
||||
|
||||
tmp = my_select(0, N-1, Nb-1, d, ind); d[Nb-1] = tmp;
|
||||
|
||||
return(tmp);
|
||||
}
|
||||
*/
|
||||
/***************************************************************/
|
||||
Loading…
Add table
Add a link
Reference in a new issue