Мегаобучалка Главная | О нас | Обратная связь


Сортировка методом простого обмена



2016-09-16 529 Обсуждений (0)
Сортировка методом простого обмена 0.00 из 5.00 0 оценок




Сравниваются и меняются местами пары элементов, начиная с последнего. В результате самый маленький элемент массива оказывается самым левым элементом массива. Процесс повторяется с оставшимися элементами массива.

42
           

 

for(int i=1;i<n;i++)

for(int j=n-1;j>=i;j--)

if(a[j]<a[j-1])

{

int r=a[j];

a[j]=a[j-1];

a[j-1]=r;}

}

 

Поиск в отсортированном массиве

В отсортированном массиве используется дихотомический (бинарный) поиск. При последовательном поиске требуется в среднем n/2 сравнений, где n – количество элементов в массиве. При дихотомическом поиске требуется не более m сравнений, если n- m-ая степень 2, если n не является степенью 2, то n<k=2m.

Массив делится пополам S:=(L+R)/ 2+1 и определяется в какой части массива находится нужный элемент Х. Так как массив упорядочен, то, если a[S]<X – искомый элемент находится в правой части массива, иначе – находится в левой части. Выбранную часть массива снова надо разделить пополам и т. д., до тех пор, пока границы отрезка L и R не станут равны.

L S R

 

int b;

cout<<"\nB=?";cin>>b;

int l=0,r=n-1,s;

do

{

s=(l+r)/2;//средний элемент

if(a[s]<b)l=s+1;//перенести леую границу

else r=s;//перенести правую границу

}while(l!=r);

if(a[l]==b)return l;

else return -1;

Постановка задачи

1) Сформировать массив из n элементов с помощью датчика случайных чисел (n задается пользователем с клавиатуры).

2) Распечатать полученный массив.

3) Выполнить удаление указанных элементов из массива.

4) Вывести полученный результат.

5) Выполнить добавление указанных элементов в массив.

6) Вывести полученный результат.

7) Выполнить перестановку элементов в массиве.

8) Вывести полученный результат.

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

10) Вывести полученный результат.

11) Выполнить сортировку массива указанным методом.

12) Вывести полученный результат.

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

14) Вывести полученный результат.

 

Варианты

Вариант Удаление Добавление Перестановка Поиск Сортировка
Максимальный элемент К элементов в начало массива Перевернуть массив Первый четный Простой обмен
Минимальный элемент К элементов в конец массива Сдвинуть циклически на M элементов вправо Первый отрицательный Простой выбор
Элемент с заданным номером N элементов, начиная с номера К Сдвинуть циклически на M элементов влево Элемент с заданным ключом (значением) Простое включение
N элементов, начиная с номера K Элемент с номером К Поменять местами элементы с четными и нечетными номерами Элемент равный среднему арифметическому элементов массива Простой обмен
Все четные элементы К элементов в начало массива Четные элементы переставить в начало массива, нечетные - в конец Первый четный Простой выбор
Все элементы с четными индексами К элементов в конец массива Поменять местами минимальный и максимальный элементы Первый отрицательный Простое включение
Все нечетные элементы N элементов, начиная с номера К Положительные элементы переставить в начало массива, отрицательные - в конец Элемент с заданным ключом (значением) Простой обмен
Все элементы с нечетными индексами Элемент с номером К Перевернуть массив Элемент равный среднему арифметическому элементов массива Простой выбор
Все элементы больше среднего арифметического элементов массива К элементов в начало массива Сдвинуть циклически на M элементов вправо Первый четный Простое включение
Максимальный элемент К элементов в конец массива Сдвинуть циклически на M элементов влево Первый отрицательный Простой обмен
Минимальный элемент N элементов, начиная с номера К Поменять местами элементы с четными и нечетными номерами Элемент с заданным ключом (значением) Простой выбор
Элемент с заданным номером Элемент с номером К Четные элементы переставить в начало массива, нечетные - в конец Элемент равный среднему арифметическому элементов массива Простое включение
N элементов, начиная с номера K К элементов в начало массива Поменять местами минимальный и максимальный элементы Первый четный Простой обмен
Все четные элементы К элементов в конец массива Положительные элементы переставить в начало массива, отрицательные - в конец Первый отрицательный Простой выбор
Все элементы с четными индексами N элементов, начиная с номера К Перевернуть массив Элемент с заданным ключом (значением) Простое включение
Все нечетные элементы Элемент с номером К Сдвинуть циклически на M элементов вправо Элемент равный среднему арифметическому элементов массива Простой обмен
Все элементы с нечетными индексами К элементов в начало массива Сдвинуть циклически на M элементов влево Первый четный Простой выбор
Все элементы больше среднего арифметического элементов массива К элементов в конец массива Поменять местами элементы с четными и нечетными номерами Первый отрицательный Простое включение
Максимальный элемент N элементов, начиная с номера К Четные элементы переставить в начало массива, нечетные - в конец Элемент с заданным ключом (значением) Простой обмен
Минимальный элемент Элемент с номером К Поменять местами минимальный и максимальный элементы Элемент равный среднему арифметическому элементов массива Простой выбор
Элемент с заданным номером К элементов в начало массива Положительные элементы переставить в начало массива, отрицательные - в конец Первый четный Простое включение
N элементов, начиная с номера K К элементов в конец массива Перевернуть массив Первый отрицательный Простой обмен
Все четные элементы N элементов, начиная с номера К Сдвинуть циклически на M элементов вправо Элемент с заданным ключом (значением) Простой выбор
Все элементы с четными индексами Элемент с номером К Сдвинуть циклически на M элементов влево Элемент равный среднему арифметическому элементов массива Простое включение
Все нечетные элементы К элементов в начало массива Поменять местами элементы с четными и нечетными номерами Первый четный Простой обмен

 

Методические указания

1. При решении задач использовать псевдодинамические массивы. Псевдодинамические массивы реализуются следующим образом:

1) при определении массива выделяется достаточно большое количество памяти:

const int MAX_SIZE=100;//именованная константа

int mas[MAX_SIZE];

2) пользователь вводит реальное количество элементов массива меньшее N.

int n;

cout<<”\nEnter the size of array<”<<MAX_SIZE<<”:”;cin>>n;

3) дальнейшая работа с массивом ограничивается заданной пользователем размерностью n.

2. Формирование массива осуществляется с помощью датчика случайных чисел. Для этого можно использовать функцию int rand(), которая возвращает псевдослучайное число из диапазона 0..RAND_MAX=32767, описание функции находится в файле <stdlib.h>. В массиве должны быть записаны и положительные и отрицательные элементы. Например, оператор a[I]=rand()%100-50; формирует псевдослучайное число из диапазона [-50;49].

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

 

6. Содержание отчета:

1) Постановка задачи (общая и конкретного варианта).

2) Анализ поставленного задания: определить к какому классу задач относится задача и объяснить почему.

3) Текст программы.

4) Результаты тестов.

5) Решение одной из задач с использованием указателей для доступа к элементам массива.

 




2016-09-16 529 Обсуждений (0)
Сортировка методом простого обмена 0.00 из 5.00 0 оценок









Обсуждение в статье: Сортировка методом простого обмена

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация...
Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние...
Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (529)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)