Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PraktikumC2.pdf
Скачиваний:
77
Добавлен:
10.02.2015
Размер:
899.39 Кб
Скачать

102

Метод прямого выбора (сортировки посредством выбора) и его модификации

Все описываемые далее методы следует рассматривать как частные варианты метода, известного под названием метод прямого выбора или сортировка посредством выбора. Общим для этих методов является нахождение (выбор) максимальных или минимальных элементов массива и размещение их в последовательных ячейках массива.

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

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

На первом шаге отыскивается и сохраняется в переменной, например, xmin минимальное число среди всех чисел массива и его индекс, сохраняемый в другой переменной, например, imin, а затем проводится обмен местами в массиве найденного минимального числа с нулевым элементом массива: x[imin]=x[0]; x[0]=xmin;. (при записи операторов учтено, что индекс первого элемента массива в языке C равен 0).

В нашем примере

 

 

 

 

 

 

 

 

Х

Х

Х

Х

Х

Х

0

 

1

2

3

 

4

5

 

 

 

 

 

 

 

 

 

 

 

3

 

2

1

1

 

2

4

 

 

4

 

1

5

8

 

5

0

 

 

 

 

 

 

 

 

 

минимальное число xmin=15 находится в ячейке imin=2, и перестановка нулевого

и минимального чисел приведёт к следующему результату

 

 

 

 

Х

Х

Х

Х

Х

Х

0

 

1

2

3

 

4

5

 

 

 

 

 

 

 

 

 

 

 

1

 

2

3

1

 

2

4

 

5

 

1

4

8

 

5

0

 

Вобщем случае, на любом шаге i, i=0,1, 2, 3, …, n-2, отыскивается xmin - минимальное число среди ячеек массива с индексами от i до n-1 и его индекс imin, а затем проводится обмен местами в массиве найденного минимального числа с i-тым элементом массива: x[imin]=x[i]; x[i]=xmin;.

Внашем примере

Оглавление

Ю.Е. Алексеев, А.В. Куров «Практикум по программированию на языке C в среде VS C++» Часть 2

103

 

 

 

 

 

 

- при i=1 получим xmin=18 и imin=3, и после перестановки

 

 

Х

Х

Х

Х

Х

Х

0

1

2

3

4

5

 

 

 

 

 

 

 

1

1

3

2

2

4

 

5

8

4

1

5

0

- при

 

 

 

 

 

 

i=2 получим

xmin=21

и imin=3, и

после перестановки

 

 

Х

Х

Х

Х

Х

Х

0

1

2

3

4

5

 

 

 

 

 

 

 

1

1

2

3

2

4

 

5

8

1

4

5

0

- при

 

 

 

 

 

 

i=3 получим

xmin=25

и imin=4, и

после перестановки

 

 

Х

Х

Х

Х

Х

Х

0

1

2

3

4

5

 

 

 

 

 

 

 

1

1

2

2

3

4

 

5

8

1

5

4

0

- при

 

 

 

 

 

 

i=4 получим

xmin=34

и imin=4, и

после перестановки

 

 

Х

Х

Х

Х

Х

Х

0

1

2

3

4

5

 

 

 

 

 

 

 

1

1

2

2

3

4

5

8

1

5

4

0

Таким образом, внешний цикл должен выполняться n-1 раз, а число выполнений внутреннего цикла будет уменьшаться от n-1 до 1. Чтобы упорядочить массив по убыванию, следует первое найденное минимальное число обменять местами с последним, второе – с предпоследним и так далее.

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

Этот метод отличается от предыдущего только тем, что отыскиваются максимальные элементы. При одинаковой организации циклов при реализации этих методов они дадут прямо противоположные результаты: если один приведёт к возрастанию чисел в массиве, то другой – убыванию, и наоборот.

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

Этот метод отличается от метода поиска минимального элемента и его индекса тем, что внутренний цикл используется для поиска только индекса минимального

Оглавление

Ю.Е. Алексеев, А.В. Куров «Практикум по программированию на языке C в среде VS C++» Часть 2

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]