Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет по Сортировкам.doc
Скачиваний:
4
Добавлен:
17.11.2018
Размер:
1.08 Mб
Скачать

Сортировка простым выбором на языке Java

void SelectSort( tItem a[], int n)

{ int i, j, jmin;

tItem buf;

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

{ jmin = i;

for( j = 1; j < i-1; j++ )

if(a[j].key <(a[jmin].key))

jmin = j;

buf = a[i];

a[i] = a[jmin];

a[jmin] = buf;

}

}

Сортировка методом Шелла на языке Си#

void ShellSort(tItem[] a, int n){

int h=13;

int i, j;

tItem x;

while (h < n){

h = 3*h + 1;

}

h = (h - 1) % 3;

do{

h = (h - 1) % 3;

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

buf = a[i];

j = i-h;

while ((j > 0) && (a[j].key < x.key )

{ a[j + h] = a[j];

j--;

}

}

a[j + h] = buf;

}while (h <= 1);

}

Быстрая сортировка с ограниченной рекурсией на языке Java

protected static void Sort(tItem a[], int L, int R)

{

tItem x;

tItem y;

int i;

int j;

while(L < R)

{

x = a[(L + R) / 2];

i = L; j = R;

do

{

while (a[i].Key < x.key) { i++; };

while (x.key < a[j].Key) { j--; };

if (i <= j)

{

y = a[i];

a[i] = a[j];

a[j] = y;

i++;

j--;

}

}while (i <= j);

if (j - L < R - i )

{

Sort(a, L, j);

L = i;

}

else

{

Sort(a, i, R);

R = j;

}

}

}

static void QuickSort(tItem a[], int n)

{

Sort(a, 1, n);

}

Сортировка простым выбором

Число сравнений ключа:

Число пересылок:

;

Быстрая сортировка с ограниченной рекурсией

Число сравнений ключа:

C = n + (2*n/2) + (4*n/4) + … + (n*n/n) = n * k = n * log( n );

Число пересылок:

Исследование сортировки Шелла при разных

параметрах алгоритма

Последовательность предложенная Кнутом: все значения kk = 3*kk + 1

Последовательность предложенная Хиббардом: все значения ; такая последовательность шагов приводит к алгоритму сложностью O(N3 / 2);

Последовательность предложенная Седжвиком: , если i четное и , если i нечетное. При использовании таких приращений средняя сложность алгоритма составляет: O(n7 / 6), а в худшем случае порядка O(n4 / 3).

Число сравнений ключа

Кол-во элементов:

Кнут

Хиббард

Седжвик

Случайный массив

Отсортированный массив

Обратно отсортированный массив

Случайный массив

Отсортированный массив

Обратно отсортированный массив

Случайный массив

Отсортированный массив

Обратно отсортированный массив

500

5868

2321

4625

6485

3253

5120

8172

1830

6187

1000

14650

4821

10804

15286

7498

11433

18394

5116

14050

1500

24631

8457

16707

24746

12487

18537

28823

8116

20000

2000

33495

11457

20625

34159

16987

24738

41734

11116

28310

2500

45452

14457

29859

45490

22964

31237

50674

15687

35958

3000

56105

17457

37155

58661

27964

41468

64044

19187

44595

3500

67597

22864

37867

67323

32964

46082

78452

22687

53115

4000

78568

26364

49142

81714

37964

54312

88141

28026

65563

4500

90293

29864

55112

96014

45417

59734

103206

32026

67417

5000

103250

33364

57866

109096

50917

68816

117978

36026

78504

Время

Кол-во элементов:

Кнут

Хиббард

Седжвик

Случайный массив

Отсортированный массив

Обратно отсортированный массив

Случайный массив

Отсортированный массив

Обратно отсортированный массив

Случайный массив

Отсортированный массив

Обратно отсортированный массив

500

1,135

0,181

0,648

1,237

0,391

0,762

1,586

0,075

0,954

1000

3,291

0,747

1,888

3,619

1,325

2,065

4,028

0,803

2,557

1500

5,426

1,507

3,134

5,824

2,398

3,581

6,384

1,462

3,802

2000

7,795

2,202

3,955

8,324

3,365

4,846

9,029

2,116

5,192

2500

10,387

2,808

5,516

11,093

4,692

5,97

11,725

3,091

6,808

3000

12,887

3,471

7,044

13,913

5,414

8,039

14,641

3,845

8,607

3500

15,838

4,664

7,257

16,51

6,541

9,159

17,237

4,605

10,314

4000

18,513

5,394

9,56

19,652

7,561

10,778

20,361

5,42

12,572

4500

21,442

5,839

10,843

22,913

9,196

11,744

23,264

6,293

13,089

5000

24,214

6,576

11,095

25,846

10,388

13,684

26,407

7,03

15