Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Data_Structure / лекц03.ppt
Скачиваний:
51
Добавлен:
03.03.2016
Размер:
78.85 Кб
Скачать

Метод Шелла

Таблица разбивается на группы элементов (записей). В группу входят записи, отстоящие друг от друга на заданное расстояние h (шаг группы).

Каждая группа упорядочивается методом вставки.

Далее- шаг делится пополам и все

повторяется

1

Первый шаг группы: Шелл - h1=[n/2],

Хиббард - h1=2k-1, где 2k < n <=2k+1,

где n – размер таблицы. Далее: hi = [hi-1/2].

2

 

Номера позиций упорядочиваемой таблицы

 

Шаг

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

 

6

1

3

15

8

14

13

11

10

4

9

2

5

12

7

h=7

6

1

3

15

8

14

13

7

10

4

9

2

5

12

11

 

6

1

3

15

8

14

13

7

10

4

9

2

5

12

11

 

6

1

3

15

8

14

13

7

10

4

9

2

5

12

11

 

6

1

3

9

8

14

13

7

10

4

15

2

5

12

11

 

6

1

3

9

2

14

13

7

10

4

15

8

5

12

11

 

6

1

3

9

2

5

13

7

10

4

15

8

14

12

11

 

6

1

3

9

2

5

12

7

10

4

15

8

14

13

11

h=3

4

1

3

6

2

5

9

7

10

12

15

8

14

13

11

 

4

1

3

6

2

5

9

7

10

12

13

8

14

15

11

 

4

1

3

6

2

5

9

7

8

12

13

10

14

15

11

h=1

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

Алгоритм сортировки таблицы методом Шелла

Параметры:

T – сортируемая таблица;

n – число записей в таблице.

4

h:=нач_шаг(n); while h>=1 Begin

for i:=1 to h do sort_ins(T, n, i, h);

h:=h div 2;

End;

5

Вспомогательные алгоритмы

1)Определение начального шага группы (по рекомендации Хиббарда)

Function нач_шаг(n):integer; begin

h:=1;

while h*2<n do h:=h*2;

нач_шаг:=h-1;

End;

6

2) Сортировка методом вставки группы записей, начиная с i-й, отстоящих на шаг h

7

Procedure sort_ins (T, n, i, h); Begin

k:=i+h; while k<n begin

if (t[k].ключ>t[k-h].ключ) then begin

temp:=t[j];

j:=k-h;

while (j>i)

and (t[j].ключ>temp.ключ) do

begin

 

T[j+h]:=T[j]; j:=j-h;

end;

 

T[k]:=temp;

end;

 

k:=k+h;

 

end;

8

End;

Характеристики метода

. Число операций сравнения пропорционально n (log2n)2 .

9

Обменная сортировка с разделением ("быстрая" сортировка)

Предложена Ч. Хоаром.

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

Разделяющий

 

элемент

 

. . .

. . .

Меньшие

Большие

10

ключи

ключи

 

Соседние файлы в папке Data_Structure