Nh 10: Lưu đồ giải thuật sắp xếp chèn

Một phần của tài liệu Ứng dụng phần mềm adobe flash professional mô phỏng các thuật toán sắp xếp (Trang 52)

*Cài đặt giải thuật :

void InsertSort (int X[], int n) {

int k := 2;// Bắt đầu chèn từ phần tử thứ hai đến cuối dãy while (k <= n) {

insert(X, k, X[k]); k := k + 1;

} }

void insert (int a[], int k, value) { int i := k-1;

while (i > 0 and a[i] > value) {

52 i := i - 1;

}

a[i+1] := value; / chèn value vào bên phải }

*Đánh giá giải thuật:

Độ phức tạp giải thuật phụ thuộc vào số lần so sánh. Ở lượt thứ i, tối đa cần i lần so sánh để tìm được vị trí chèn thích hợp. Do vậy số lần so sánh tối đa là:

∑ ( )

d) Sắp xếp nhanh : *Ý tưởng :

Kỹ thuật sắp xếp nhanh xếp danh sách theo chiến lược chia để trị (divide & conquer). Trong thuật toán này, danh sách cần xếp sẽ được xếp thành 2 nhóm, nhóm các phần tử lớn và nhóm các phần tử nhỏ dựa trên 1 phần tử được chọn nào đó. Sau đó tiến hành lặp đệ qui thao tác đó đến khi toàn bộ danh sách được sắp xếp. Nếu so với thuật toán nổi bong bóng đã giới thiệu, thì thuật toán này tỏ ra hiệu quả hơn do số lần thực hiện việc so sánh các phần tử sẽ ít hơn.

*Cá bước thực hiện:

Sắp xếp một đoạn bất kỳ X[L],...,X[R] với điều kiện L < R

 Bước 1: pirot = (L+R) div 2, key=X[pirot]

 Bước 2: i=L+1, j=R

 Bước 3:

* Nếu X[i] < key thì i=i+1; * Nếu X[j] > key thì j=j-1;

53

 Bước 5: Lặp lại từ Bước 1 đến Bước 3 với đoạn X[L],...,X[j-1] và X[j] đến X[R], dừng khi tất cả đoạn có độ dài là 1.

*Cài đặt giải thuật :

Thủ tục phân chia

Function Part(a[1..n],k1,k2)

i=k1; j=k2; k=int((k1+k2)/2)+1; v=a[k] While i<j do

While a[i]<=v do i:=i+1; While a[j]>v and j>i do j=j-1; if i>=k2 then

Swap(a[k],a[k2]) return k2-1 Swap(a[i],a[j]) return i-1 (adsbygoogle = window.adsbygoogle || []).push({});

Quick Sort đệ quy

Procedure PartSort (a,k1,k2) if k1<k2 then

k=part(a,k1,k2) PartSort(a,k1,k) PartSort(a,k+1,k2) *Đánh giá giải thuật :

 Độ phức tạp thời gian : O(n logn)

 Trường hợp xấu nhất O(n2 )

54

4.1.5. Thể hiện kịch bản:

*Tạo chuyển động bằng kỹ thuật Adding a Motion Guide:

Kỹ thuật Adding a Motion Guide là kỹ thuật chuyển động theo đường vẽ. Chúng ta sẽ vẽ đường chuyển động cho đối tượng rồi cho đối tượng chuyển chuyện theo đường đã vẽ.

 B1: Tạo mới một dự án Ascript 3.0

 B2: Trên thanh công cụ Tools chọn Oval Tool (Ctrl + O)

Một phần của tài liệu Ứng dụng phần mềm adobe flash professional mô phỏng các thuật toán sắp xếp (Trang 52)