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


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

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






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





Элементы массива делятся на уже готовую отсортированную последовательность (слева) и еще необработанные (справа). Сначала левая последовательность содержит один элемент a[0]. Начиная с i=1 (это второй элемент массива), из исходной последовательности извлекается i -ый элемент и вставляется на нужное место готовой последовательности, затем i увеличивается на 1 и т. д.

Пример работы сортировки приведен в таблице 8.1.

Таблица 8.1 – Сортировка методом вставки

           
           
           
           
           
           
           

 

В процессе поиска нужного места осуществляются сдвиги элементов больше выбранного на одну позицию вправо:

- выбранный элемент сравнивают с очередным элементом отсортированной части, начиная с j=i-1;

- если выбранный элемент больше или равен a[j], то его включают в отсортированную часть;

- в противном случае a[j] сдвигают на одну позицию.

Процесс поиска подходящего места заканчивается при двух различных условиях:

- если найден элемент a[j]>=a[i];

- достигнут левый конец готовой последовательности.

Ниже приведен соответствующий код:

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

int tmp=a[i]; // запомнили элемент, который будем вставлять

int j=i-1;

while(j>=0 && x<a[j]){ // поиск подходящего места

a[j+1]=a[j]; // сдвиг вправо

j--;

}

a[j+1]=tmp; // вставка элемента

}

Метод сортировки вставками относится к устойчивым.

 

Обменная сортировка

Элементы, начиная с нулевого и до предпоследнего, сравниваются со всеми, расположенными правее. Если пара сравниваемых элементов «неправильная», они обмениваются местами. Альтернативно можно сравнивать элементы с последнего до второго (с индексом 1) со всеми левыми.

Код обменной сортировки:

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

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

if(a[i]>a[j]) {

int tmp=a[i];

a[i]=a[j];

a[j]=tmp;

}

Сортировка неустойчивая. Код этой сортировки самый короткий, ошибиться в нем маловероятно. Если вы сортируете небольшой массив, и не требуется устойчивость, то используйте эту сортировку.

 







Date: 2016-11-17; view: 343; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию