Читайте также:
|
|
Алгоритм сортировки массива по возрастанию методом прямого выбора может быть представлен так:
1. Просматривая массив от первого элемента, найти минимальный элемент и поместить его на место первого элемента, а первый — на место минимального.
2. Просматривая массив от второго элемента, найти минимальный элемент и поместить его на место второго элемента, а второй — на место минимального.
3. И так далее до предпоследнего элемента.
Сортировка методом обмена
В основе алгоритма лежит обмен соседних элементов массива. Каждый элемент массива, начиная с первого, сравнивается со следующим, и если он больше следующего, то элементы меняются местами. Таким образом, элементы с меньшим значением продвигаются к началу массива (всплывают), а элементы с большим значением — к концу массива (тонут). Поэтому данный метод сортировки обменом иногда называют методом "пузырька". Этот процесс повторяется столько раз, сколько элементов в массиве, минус единица.
Следует отметить, что максимальное необходимое количество циклов проверки соседних элементов массива равно количеству элементов массива минус один.
Пример: 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"+"массив отсортирован";}
Дата добавления: 2015-11-04; просмотров: 63 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Int j1,j2,j3,j4; | | | Лаборатоная работа № 6 |