Ý tưởng:
Giả sử có dãy a0, a1,…,ai-1 đã được sắp xếp. Ý tưởng của thuật toán là chèn thêm phần tử mới ai vào vị trí thích hợp của đoạn a1…ai-1 sao cho được dãy mới a1…ai đã được sắp xếp
Nguyên tắc sắp xếp như sau: đoạn gồm phần tử a0 đã được sắp xếp, thêm a1 vào được a0,a1 đã được sắp xếp, tiếp tục thêm a2 vào được a0, a1, a2 đã sắp xếp…tiếp tục để thêm an vào để được a0,a1,…,an đã sắp xếp.
Thuật toán:
Đầu vào: n – số phần tử mảng
a – mảng chứa các phần tử bất kỳ
Đầu ra: a- mảng đã được sắp xếp tăng dần
Bước 1: i=1 //giả sử a[0] đã được sắp xếp
Bước 2: tìm vị trí pos thích hợp trong đoạn từ a[0] đến a[i-1] để chèn a[i] vào
Bước 3: đổi chỗ các phần tử từ a[pos] đến a[i-1] sang phải một vị trí để được vị trí chèn a[i] vào
Bước 4: chèn a[i] vào vị trí pos tìm được bằng cách gán a[pos]=a[i]
Bước 5: i=i+1
Nếu i lặp lại bước 2
Ngược lại => Dừng thuật toán
Ví dụ: Cho dãy số a = 12 , 2 , 8 , 5 , 1 , 6 , 4 , 15
Mô tả các bước chạy khi thực hiện thuật toán với dãy trên :
i=1 => Cần chèn phần tử a[1] vào dãy a[0] => pos=-1
Vi tri so pos=pos+1
i=2 => Cần chèn phần tử a[2] vào dãy a[0],a[1] => pos=1
i=3 => Cần chèn phần tử a[3] vào dãy a[0],a[1],a[2]=> pos = 1
i=4 => Cần chèn phần tử a[4] vào dãy a[0],a[1],a[2],a[3] => pos = 0
i=5 => Cần chèn phần tử a[5] vào dãy a[0],a[1],a[2],a[3],a[4] => pos = 3
i=6 => Cần chèn phần tử a[6] vào dãy a[0],a[1],a[2],a[3],a[4],a[5] => vi tri 2
i=7 => Cần chèn phần tử a[7] vào dãy a[0],a[1],a[2],a[3],a[4],a[5],a[6] => pos = 7
=> dừng
Vậy dãy đã sắp xếp là a = 1 2 4 5 6 8 12 15
Cài đặt:
void InsertionSort(float a[],int n)
{
float temp;
for(int i=2;i<=n;i++)
{
temp=a[i];
int vt=i;
while ((a[vt-1]>temp)&&(vt>1))
{
a[vt]=a[vt-1];
vt=vt-1;
}
a[vt]=temp;
}
}
Home
»
»Unlabelled
» Thuat Toan InsertionSort
Chủ Nhật, 20 tháng 5, 2012
Đăng ký:
Đăng Nhận xét (Atom)
Popular Posts
-
; nhập vào 2 số nguyên a, b <10 ; tính tổng a+b, in kết quả ra màn hình .model small .code org 100h jmp Main a db ? b db ? ...
-
AirlineDomains.com Make Offer TouristDomains.com Make Offer MinhphuGroup.com Make Offer TurkeyDomain.com Make Offer TouristDomain.com Make O...
-
Một phụ nữ người Utah cùng đứa con 17 tháng tuổi đã được giải thoát sau 5 ngày bị chính người chồng bắt làm con tin. Troy Reed Critchfi...
-
Dịch vụ âm nhạc trực tuyến trứ danh của Châu Âu, Spotify công bố đã có 2,5 triệu khách hàng thường xuyên trả tiền để nghe các bài hát có bản...
-
Trong số các chương trình viết nhạc, Encore là chương trình có tính năng trình diễn rất tiện lợi, với 11 thanh công cụ trong Palette để soạn...
-
Như tiêu đề, qua tham khảo thông tin trên forum, thấy nhiều bạn than vãn về vấn đề chia ổ bằng acronis diskdirector mà chưa có lời giải đáp ...
-
Easy DriverPack liên tục ra phiên bản mới đến nay chúng ta đã có một sự cải tiến vượt bậc về giao diện và cải tiến về phương pháp nhận biết ...
-
/* Bài toán Xếp Hậu Bài toán tám quân hậu là bài toán đặt tám quân hậu trên bàn cờ vua kích thước 8×8 sao cho không có quân hậu nào có thể &...
-
org 100h jmp start ; tao xau nghich dao string1 db ' toi khong mo hoa $' start: lea bx, string1 mov si, bx next_byt...
-
/* Bài toán "Tháp Hà Nội" Tương truyền rằng ngày xửa ngày xưa, lâu lắm rồi, ở một vùng xa xôi viễn đông, thành phố Hà Nội của Việ...
0 nhận xét:
Đăng nhận xét