/***************************************************************/ 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]> 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); } */ /***************************************************************/