![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Сортировка методом обмена
В основе алгоритма лежит обмен соседних элементов массива. Каждый элемент массива, начиная с первого, сравнивается со следующим, и если он больше следующего, то элементы меняются местами. Таким образом, элементы с меньшим значением продвигаются к началу массива (всплывают), а элементы с большим значением — к концу массива (тонут). Поэтому данный метод сортировки обменом иногда называют методом " пузырька". Этот процесс повторяется столько раз, сколько элементов в массиве, минус единица. Следует отметить, что максимальное необходимое количество циклов проверки соседних элементов массива равно количеству элементов массива минус один.
Пример: 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" +" массив отсортирован"; }
|