Студопедия

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

КАТЕГОРИИ:

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






Сортировка с помощью выделения (прямого выбора)






Сортировка с помощью включения

i = 1 44 55 12 42 94 18 06 67

i = 2 44 55 12 42 94 18 06 67

i = 3 12 44 55 42 94 18 06 67

i = 4 12 42 44 55 94 18 06 67

i = 5 12 42 44 55 94 18 06 67

i = 6 12 18 42 44 55 94 06 67

i = 7 06 12 18 42 44 55 94 67

i = 8 06 12 18 42 44 55 67 94


Последовательность на текущий момент. Часть a[0], …, a[4] уже отсортирована.

i = 5 12 42 44 55 94 18 06 67

Вставка число 18 в отсортированную последовательность. Пара для сравнения выделена.

i = 5 12 42 44 55 94 18 06 67

j = 1 12 42 44 55 18 94 06 67

j = 2 12 42 44 18 55 94 06 67

j = 3 12 42 18 4455 94 06 67

j = 4 12 18 42 44 55 94 06 67

void insertSort(int* a, long size) {int x; long i, j; for(i =0; i < size; i++) // цикл проходов, i - номер прохода { x = a[i]; // поиск места элемента в готовой последовательности for (j = i-1; j > = 0 & & a[j] > x; j--) a[j+1] = a[j]; //сдвигаем элемент направо, пока не дошли a[j+1] = x; // место найдено, вставить элемент }}

 

//// сортировка вставками с барьером ////// void insertSortGuarded(int* a, long size) { int x; long i, j; int backup = a[0]; // сохранить старый первый элемент a[0] = 0xffffffff; // заменить на минимальный // отсортировать массив for (i=1; i < size; i++) { x = a[i]; for (j=i-1; a[j] > x; j--) a[j+1] = a[j]; a[j+1] = x; } // вставить backup на правильное место for (j=1; j< size & & a[j] < backup; j++) a[j-1] = a[j]; a[j-1] = backup; // вставка элемента}

Сортировка с помощью выделения (прямого выбора)

i = 0 44 55 12 42 94 18 06 67

1 06 55 12 42 94 18 44 67

2 06 12 55 42 94 18 44 67

3 06 12 18 42 94 55 44 67

4 06 12 18 42 94 55 44 67

5 06 12 18 42 44 55 94 67

6 06 12 18 42 44 55 94 67

7 06 12 18 42 44 55 67 94

 

////////////// Сортировка выделением //////////////void selectSort(int* a, long size) {int x, minE, minP; long i, j; for(i=0; i < size; i++) { цикл проходов, i-номер прохода x = a[i]; minE = 0x7fffffff; // поиск в остатке минимального элемента и его места for(j = i; j < size; j++) if(a[j] < minE) { minE = a[j]; minP = j; } // место мин найдено, переписываем мин элемент на i-ое место a[i] = minE; a[minP] = x; // на место мин записываем элемент a[i] }}
4. Сортировка с помощью обменов (пузырьковая сортировка)

 

 

void bubbleSort(int a[], long size) {long i, j; int x; for(i = 0; i < size; i++) { // i - номер прохода for(j = size-1; j > i; j--) {// внутренний цикл прохода if (a[j-1] > a[j]) { x=a[j-1]; a[j-1]=a[j]; a[j]=x; } } }}

Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал