diff --git a/sort/dw_matrix_sort.c b/sort/dw_matrix_sort.c index e295f1b53d5ec4432db6644e7ccb380a0e4aee4f..e187d4f7196c233f9ae2c119a6fe950dc730ee96 100644 --- a/sort/dw_matrix_sort.c +++ b/sort/dw_matrix_sort.c @@ -611,7 +611,7 @@ static void b_qsort_matrix_rows_descending_real(PRECISION *x, int m, int n, int } } -/* +/* Assumes: x - array of length m @@ -620,63 +620,66 @@ static void b_qsort_matrix_rows_descending_real(PRECISION *x, int m, int n, int Notes: Uses the quick sort median of three algorithm -*/ -static void b_median_qsort_array_ascending(PRECISION *x, int m) -{ - PRECISION y; - int j, k; - if (m > 10) - { - // Quick sort - j=(m--)/2; - - y=x[j]; x[j]=x[1]; x[1]=y; - - if (x[1] > x[m]) - if (x[0] > x[m]) - if (x[0] > x[1]) - { y=x[0]; x[0]=x[m]; x[m]=y; } - else - { y=x[0]; x[0]=x[m]; x[m]=x[1]; x[1]=y; } - else - { y=x[1]; x[1]=x[m]; x[m]=y; } - else - if (x[0] > x[1]) - if (x[0] > x[m]) - { y=x[0]; x[0]=x[1]; x[1]=x[m]; x[m]=y; } - else - { y=x[0]; x[0]=x[1]; x[1]=y; }; + Currently this function is not being used and may be untested + +*/ +/* static void b_median_qsort_array_ascending(PRECISION *x, int m) */ +/* { */ +/* PRECISION y; */ +/* int j, k; */ +/* if (m > 10) */ +/* { */ +/* // Quick sort */ +/* j=(m--)/2; */ + +/* y=x[j]; x[j]=x[1]; x[1]=y; */ + +/* if (x[1] > x[m]) */ +/* if (x[0] > x[m]) */ +/* if (x[0] > x[1]) */ +/* { y=x[0]; x[0]=x[m]; x[m]=y; } */ +/* else */ +/* { y=x[0]; x[0]=x[m]; x[m]=x[1]; x[1]=y; } */ +/* else */ +/* { y=x[1]; x[1]=x[m]; x[m]=y; } */ +/* else */ +/* if (x[0] > x[1]) */ +/* if (x[0] > x[m]) */ +/* { y=x[0]; x[0]=x[1]; x[1]=x[m]; x[m]=y; } */ +/* else */ +/* { y=x[0]; x[0]=x[1]; x[1]=y; }; */ + +/* for (j=2; (j < m) && (x[j] <= x[1]); j++); */ +/* for (k=m-1; (k > 1) && (x[k] >= x[1]); k--); */ +/* while (j < k) */ +/* { */ +/* y=x[j]; x[j]=x[k]; x[k]=y; */ +/* while (x[j] <= x[1]) j++; */ +/* while (x[k] >= x[1]) k--; */ +/* } */ +/* if (k > 1) */ +/* { */ +/* y=x[k]; x[k]=x[1]; x[1]=y; */ +/* b_median_qsort_array_ascending(x,k); */ +/* } */ +/* if (j < m) */ +/* b_median_qsort_array_ascending(x+j,m-j+1); */ +/* } */ +/* else */ +/* { */ +/* // Insertion sort */ +/* for (j=1; j < m; j++) */ +/* { */ +/* for (k=j-1; k >= 0; k--) */ +/* if (x[j] >= x[k]) break; */ +/* if (++k < j) */ +/* { */ +/* y=x[j]; */ +/* memmove(x+k+1,x+k,(j-k)*sizeof(PRECISION)); */ +/* x[k]=y; */ +/* } */ +/* } */ +/* } */ +/* } */ - for (j=2; (j < m) && (x[j] <= x[1]); j++); - for (k=m-1; (k > 1) && (x[k] >= x[1]); k--); - while (j < k) - { - y=x[j]; x[j]=x[k]; x[k]=y; - while (x[j] <= x[1]) j++; - while (x[k] >= x[1]) k--; - } - if (k > 1) - { - y=x[k]; x[k]=x[1]; x[1]=y; - b_median_qsort_array_ascending(x,k); - } - if (j < m) - b_median_qsort_array_ascending(x+j,m-j+1); - } - else - { - // Insertion sort - for (j=1; j < m; j++) - { - for (k=j-1; k >= 0; k--) - if (x[j] >= x[k]) break; - if (++k < j) - { - y=x[j]; - memmove(x+k+1,x+k,(j-k)*sizeof(PRECISION)); - x[k]=y; - } - } - } -}