Не удается сделать эту сортировку, так как рекурсия идет не так как надо =( Приблизительный алгоритм этой сортировки такой: | Код | void sort(int in[], int a, int b){ int i; if (a==b) return; // Разделить массив в интервале a..b // на две части a..i-1 и i..b // относительно значения v по принципу <v, >=v sort(in,a,i-1); sort(in,i,b);}
|
Вот моя ерсию, которая по непонятным мне причинам не работает: | Код | void sort(int A[], int a, int b) { int i,k,j,sum; int B[10]; double m;
if (a>=b) return; for (k=a, sum=0;k<=b;k++) { sum+=A[k]; } m=sum/k;
for(i=j=a, k=b ;i<=b; i++) { if (A[i]<m) B[j++]=A[i]; else B[k--]=A[i]; }
for (i=a;i<=b;i++) { A[i]=B[i]; }
sort(A,a,j-1); sort(A,j+1,b); }
void main() { int A[10]={5,2,7,4,8,9,3,2,4,7};
sort(A,0,9);
for (int i=0;i<9;i++) { printf("%d ",A[i]); } }
|
Заранее благодарю за помощь...
|