Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Лекция 13




Begin

Begin

Begin

Begin

Begin

Var

i, j, k: int64;

x, y, z: single;

nMove:= 0;

nCompare:= 0;

 

for i:= 1 to nCurr -1 do

k:= i;

x:= A[i];

z:= x;

Inc(nMove);

 

 


for j:= i + 1 to nCurr do

y:= A[j];

Inc(nMove);

Inc(nCompare);

if y< x then

k:= j; x:= y;

end;

end;

 

if k <> i then

A[k]:= z; A[i]:= x;

Inc(nMove, 2);

end;

end;

end;

 

 

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

 

 

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

 

 


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

 

 

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

 


Количество переносов с диска (nMoveFromDisk):

 

 

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

 

 


Количество переносов на диск (nMoveToDisk):

 

 

i Min Max Average
      ?
      ?
      ?
i     ?
n -1     ?
0 2 n- 2 ?

 


Количество безусловных переносов в памяти (nMoveInMemoryConst):

 

 

i Min Max Average
       
       
       
i      
n -1      
n -1 n -1 n -1

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

Асимптотическая формула для гармонического числа:

,

– число Эйлера,

. (1)

 

Результаты применения формулы (1):

 

           
1.83333 2.08333 2.28333 2.45000 2.59286 2.71786
1.83324 2.08330 2.28332 2.44999 2.59285 2.71786

 

Количество случайных переносов в памяти:

 

i Min Max Average
j =2 j =3 j =4 j j = n
  n 2 n -1 1/2 1/3 1/4 1/ j 1/ n
  n -1 2 n -3 1/2 1/3 1/(j -1) 1/(n -1)
  n -2 2 n -5 1/2 1/(j -2) 1/(n -2)
i n - i +1 2 n -2 i +1 1/(j - i +1) 1/(n - i +1)
n -1     1/2
n 2/2+ n /2-1 n 2-1 =???

 


.

(2)

Члены вида отброшены.

 

 

Для численной проверки сделанных оценок предлагается проект, действующий следующим образом.

Массив A заполняется случайными числами с помощью вспомогательной процедуры FillArray.

Проверка того, является ли массив отсортированным, проводится процедурой IsArraySorted – как до сортировки, так и после.

Процедура ShowArray вызывается, при необходимости, для показа массива.

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

InsertSort – сортировка вставками,

BubbleSort – сортировка методом пузырька,

StraightSelectionSort – сортировка методом прямого выбора.

Для каждой процедуры сортировки проводится цикл экспериментов, управляемый параметром цикла k. При каждом следующем k число элементов массива nCurr удваивается по сравнению с предыдущим случаем.


– это наблюденное число переносов при последнем значении nCurr.

– это наблюденное число переносов при предыдущем значении nCurr. (И совсем не обязательно, чтобы именно в два раза меньшим).

Если

,

то

,

откуда

, .

Для рассмотренных сортировок эти формулы позволяют убедиться в верности оценок для среднего числа переносов и сравнений. Для всех случаев, кроме оценки числа «случайных» переносов в памяти в сортировке методом прямого выбора.

 

 

Сортировка массивов (продолжение)





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


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


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



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




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