1. Trang chủ
  2. » Công Nghệ Thông Tin

Cấu trúc dữ liệu và giải thuật (phần 3) pdf

10 441 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 196,19 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Shell sortGiới thiệu: – Được phát minh bởi Donald L.Shell vào năm 1959 – Shell sort là thuật toán hiệu quả nhất trong nhóm – Shell sort là sự cải tiến của Insertion sort dựa vào hai nhậ

Trang 1

Please purchase a personal license.

Trang 2

SHELL SORT

Trang 3

Ôn tp Insertion sort

Ý tưởng của thuật toán:

Trang 4

Ôn tp Insertion sort

Ví dụ: A = { 5 8 6 3 10 }

Ban đầu mảng A có {5} đã sắp xếp

1 Chèn 8 vào {5}  {5,8}

2 Chèn 6 vào {5,8}  {5,6,8}

3 Chèn 3 vào {5,6,8}  {3,5,6,8}

4 Chèn 10 vào {3,5,6,8}  {3,5,6,8,10}

Trang 5

Ôn tp Insertion sort

Code:

void Insertion_sort (int a[], int n)

for ( int k =i; (k>0)&&(a[k-1]>x);k )

a[k]=a[k-1];

a[k]=x;

} }

Trang 6

Shell sort

Giới thiệu:

– Được phát minh bởi Donald L.Shell vào năm 1959 – Shell sort là thuật toán hiệu quả nhất trong nhóm

– Shell sort là sự cải tiến của Insertion sort dựa vào hai nhận xét sau đây:

• Insertion sort sẽ rất hiệu quả nếu dữ liệu đầu vào hầu như đã được sắp xếp (đã được xếp trong từng khoảng cục bộ)

• Insertion sort hoạt động kém hiệu quả vì nó di chuyển các giá trị phần tử mỗi lần chỉ một vị trí

Trang 7

Shell sort

Ý tưởng thuật toán:

- Thuật toán Shell sort với số bước giảm dần

- Chọn khoảng cách giữa các bước d = n; d=(d+1)/2

- Phân chia dãy ban đầu thành các dãy con cách

nhau d khoảng

- Sắp xếp từng dãy con bằng Insertionsort

Trang 8

Shell sort

Cài đặt thuật toán:

void ShellSort (int a[], int n)

{ int d=n;

while (d >=1)

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

} }

}

Trang 9

Shell sort

Trang 10

Shell sort

Ngày đăng: 09/07/2014, 17:20

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w