{
int m=(beg+end)/2,i=beg,j=end;
minim=w[m];
do
{
while(w.average<minim.average)i++;
while(w[j].average>minim.average)j--;
if(i<=j)
{temp=w;w=w[j];w[j]=temp;i++;j--;}
}
while(i<=j);
if(j>beg)FastSort(beg,j);
if(i<end)FastSort(i,end);
}
Быстрая сортировка,помогите
{
int m=end/2+1,i=beg,j=end;
minim=w[m];
do
{
while(w.average<minim.average)i++;
while(w[j].average>minim.average)j--;
if(i<=j)
{temp=w;w=w[j];w[j]=temp;i++;j--;}
}
while(i<=j);
if(j>0)FastSort(0,j);
if(i<end)FastSort(i,end-i);
}
w[5] - это массив структур,average - поле по которому надо сортировать.Сортирует вроде правильно.Но!входные данные:
1 .................................................3833
2 .................................................6700
3 .................................................3066
4 .................................................3800
5 .................................................11866
А на выходе:
3 .................................................3066
4 .................................................3800
4 .................................................3800
2 .................................................6700
5 .................................................11866
Пропадают данные из 1-го элемента массива и дублируются из 4-го.
Внимание вопрос - почему так?
Что-то я протупил,наверное тему эту надо было в ветке "студентам" постить.Модераторы перенесите.
Вопрос исчерпан :-)