Назад | Начало урока | Вперед
Содержание

Глава 1 (продолжение 1)

Сортировка методом отбора

При сортировке методом отбора алгоритм находит элемент с меньшим
значением и выполняет перестановку,меняя его местами с первым
элементом массива.После этого из оставшихся n-1 элементов
ищется наименьший,после чего осуществляется его перестановка
со вторым элементом и так далее.Перестановки будут осуществляться
до тех пор,пока не поменяются местами последние два элемента.


//параметризованная версия сортироки методом отбора

#include <iostream.h>
#include <string.h>

template <class Stype> void select(Stype *item,int count);

main() {

//сортировка массива символов char str[] = "dcab";
select(str, (int) strlen(str));
cout<<"Otsortirovannyi massiv simvolov- " << str << endl;

//сортировка массивов целых чисел int nums[] = {

5,7,3,9,5,1,8
};

int i; select(nums,7);
cout<<" Otsortirovannyi massiv chisel : ";
for(i=0;i<7;i++) cout <<nums[i] <<" ";

return 0;

}


//параметризованная функция сортировки отбором

template <class Stype> void select(Stype *item,int count) {

register int a,b,c;
int exchange;
Stype t;

for(a=1;a<count;++a) {

exchange = 0;
c = a;
t = item[a];

for(b=a+1;b<count;++b) {

if(item[b] < t) {
c = b;
t=item[b];
exchange = 1;
}
}


if(exchange) {

item[c] = item[a]; item[a] = t;

}
}
}

Результат:

Otsortirovannyi massiv simvolov- dabc
Otsortirovannyi massiv chisel : 5 1 3 5 7 8 9

АВ:Как видим результат тоже не правильный.

Но неправильно отсортирован только первый элемент.
Остальные элементы отсортированы правильно.

Остальные элементы отсортированы правильно.


Назад | Начало урока | Вверх | Вперед
Содержание

Hosted by uCoz