Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Сортировка методом пузырька. Сортировка вставками




Begin

Begin

Begin

Begin

Begin

Var

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

 

 

Алгоритм, в нескольких словах, таков.

На «первом» шаге вообще ничего не делается.

На втором шаге берётся второй элемент (A 2) и сравнивается с первым (A 1). Если второй элемент меньше первого, они обмениваются местами. Результат – два элемента упорядочены.

На i -ом шаге (теперь i = 3, 4, 5, …, n) берётся i -ый элемент (Ai) и сравнивается с теми элементами Aj, что расположены слева от него: j = i - 1, j = i - 2, j = i - 3, и т.д. – так до тех пор, пока выполняется неравенство Ai < Aj. В последний раз, когда это неравенство будет выполнено, переменная j примет значение, равное новому месту для Ai – такому, куда нужно Ai вставить.

Например, пусть i = 5, а первые 5 элементов массива таковы: 4, 3, 9, 11, 5. В последний раз Ai < Aj при j = 3. Следовательно, число 5 должно встать на третью позицию, подвинув числа 9, 11 вправо на 1 шаг. Результат – i элементов упорядочены.

 


Текст процедуры:

 

procedure InsertSort;

i, j: int64;

x: single;

nMove:=0;

nCompare:=0;

 

for i:= 2 to nCurr do

x:= A[i];

Inc(nMove);

 

j:= i;

while (j > 1) and (x < A[j - 1]) do

// Попаданий в тело цикла будет на 1 меньше,

// чем вычислений логического условия « (j > 1) and (x < A[j - 1])».

Inc(nCompare);

A[j]:= A[j - 1];

Inc(nMove, 2);

Dec(j);

end;

 

if j > 1 then

// Сюда попали => при последнем j проверка «(x < A[j - 1])» была

Inc(nMove);

// Прверка условия «(x < A[j - 1])» требует одного перемещения

Inc(nCompare);

end;

 

if j <> i then

A[j]:= x;

Inc(nMove);

end;

end;

end;

Назначение переменных:

nCurr – текущее количество элементов в массиве,

nMove – найденное количество перемещений.

nCompare – найденное количество сравнений.


Количество сравнений (nCompare):

 

 

i Min Max Average
       
      3/2
       
i   i -1 i /2
n   n -1  
n -1 n 2/2- n /2 n 2/4+ n /4-1/2

 

 


Количество переносов (nMove):

 

 

i Min Max Average
       
       
       
i   2 i i +1
n   2 n n +1
2(n -1) n 2+ n -2 n 2/2-3 n /2-2

 

 

 

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

На втором шаге свое законное место (второе слева) занимает наименьший из оставшихся элементов массива. И т.д.


Текст процедуры:

procedure BubbleSort;




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


Дата добавления: 2014-01-06; Просмотров: 247; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.