Глава 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
АВ:Как видим результат тоже не правильный.
Но неправильно отсортирован только первый элемент.
Остальные элементы отсортированы правильно.
Остальные элементы отсортированы правильно.
Назад |
Начало урока |
Вверх |
Вперед
Содержание