Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции по С++.doc
Скачиваний:
34
Добавлен:
15.12.2018
Размер:
2.31 Mб
Скачать

1.2. Сортировка выбором

При сортировке этим методом при просмотре массива ищется наименьший элемент, сравнивая его с первым. Если такой элемент найден, но меняется местами с первым. Затем эти действия повторяются, но не с первого элемента, а со второго. Так продолжается до тех пор, пока не будет отсортирован весь массив:

Алгоритм (в порядке возрастания)

Программа

объявление вещ: t[10], x, цел: i, j, k

для i=0 до 10-1 шаг 1

ввод t[i]

все_для i

для i=0 до 10-1 шаг 1

k=i

x=t[i]

для j=i+1 до 10-1 шаг 1

если t[j]<x

// меняем местами два

// элемента

x=t[j]

k=j

все_если

t[k]=t[i]

t[i]=x

все_для j

все_для i

для i=0 до 10-1 шаг 1

вывод t[i]

все_для i

#include “stdio.h”

#include “math.h”

#define N 10

int main()

{

float t[N], x;

int i, j, k;

//ввод массива с клавиатуры

for(i=0;i<=N-1;i++)

{

printf("t[%i]=",i);

scanf("%f",&t[i]);

}

// сортировка массива

for(i=0;i<=N-1;i++)

{

k=i;

x=t[i];

for(j=i+1;j<=N-1;j++)

//находятся элементы, которые

//нужно поменять местами

if(t[j]<x)

{

k=j;

x=t[j];

}

//найденные элементы меняются

//местами

t[k]=t[i];

t[i] = x;

}

for( i=0; i <=N-1; i++)

{

printf("%.3f ",t[i]);

}

return 1;

}

1.3. Сортировка простыми вставками

Сортировка простыми вставками в чем-то похожа на вышеизложенные методы. Аналогичным образом делаются проходы по части массива и в его начале "вырастает" отсортированная последовательность.

Алгоритм (в порядке возрастания)

Программа

объявление вещ: t[10], x, цел: i, j

для i=0 до 10-1 шаг 1

ввод t[i]

все_для i

для i=0 до 10-1 шаг 1

x=t[i]

// поиск позиции элемента, меньшего x

// в последовательности

для j=i-1 до 0 и t[j]>х шаг -1

//сдвигаем элемент вправо, пока не

//нашли меньший, чем x

t[j+l] =t[j];

// позиция меньшего элемента

// найдена

//меняем элемент

t[j+l] = х;

все_для j

все_для i

для i=0 до 10-1 шаг 1

вывод t[i]

все_для i

#include "stdio.h"

#define N 10

int main()

{

float t[10], x;

int j,i;

for( i=0; i<=N-1; i++)

{

printf("t[%i]=",i);

scanf("%f",&t[i]);

}

for ( i=0; i <=N-1 ;i++)

{

x = t[i];

for ( j=i-1; j>=0 && t[j] > x; j--)

t[j+1] = t[j];

t[j+1] = x;

}

for( i=0; i <=N-1; i++)

{

printf("%.3f ",t[i]);

}

printf ("\n");

return 1;

}