Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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






В основе алгоритма лежит обмен соседних элементов массива. Каждый элемент массива, начиная с первого, сравнивается со следующим, и если он больше следующего, то элементы меняются местами. Таким образом, элементы с меньшим значением продвигаются к началу массива (всплывают), а элементы с большим значением — к концу массива (тонут). Поэтому данный метод сортировки обменом иногда называют методом " пузырька". Этот процесс повторяется столько раз, сколько элементов в массиве, минус единица.

Следует отметить, что максимальное необходимое количество циклов проверки соседних элементов массива равно количеству элементов массива минус один.

 

Пример: 3.1. Отсортировать целочисленный массив по возрастанию и убыванию методом сортировка выбором.

Формы:

 

Отрывок текста программы:

...

int a[n]; // объявление массива

int min; // номер наименьшего элемента

int j; // номер элемента массива, сравниваемого с наименьшим

int buf; // буфер, используемый для обмена элементами массива

int i, k;

...

for (i=0; i< n; i++)

a[i]=StrToInt(StringGrid1-> Cells[i-1, 0]); // ввод элементов массива

Label2-> Caption=" ";

for (i=0; i< n; i++)

{ min=i; // определение наименьшего элемента среди a[0] … a[n]

for (j=i; j< n; j++)

if (a[j]< a[min]) min=j;

// поменять местами элементы a[i] и a[min] используя буфер обмена

buf=a[i];

a[i]=a[min]; a[min]=buf;

// отсортированный массив

for (k=0; k< n; k++)

Label2-> Caption=Label2-> Caption+' '+IntToStr(a[k]);

Label2-> Caption=Label2-> Caption+" \n"; }

Label2-> Caption=Label2-> Caption+" \n" +" массив отсортирован"; }






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.