Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Быстрая сортировка,помогите

9.2K
14 апреля 2007 года
mikron
27 / / 07.01.2006
void FastSort(int beg,int 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-го.
Внимание вопрос - почему так?

Что-то я протупил,наверное тему эту надо было в ветке "студентам" постить.Модераторы перенесите.
17K
17 апреля 2007 года
filin121
10 / / 27.10.2006
Код:
{
   
    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);

}

вроде так. и не fastsort а quicksort - принципиально!
9.2K
18 апреля 2007 года
mikron
27 / / 07.01.2006
Спасибо filin121,теперь все работает.А данные дублировались из-за того что при вызове вместо индекса последнего элемента массива ставил его размер,который на 1 больше.

Вопрос исчерпан :-)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог