-nếu A[4]tg ,mỗi phần tử xuống một vị trí.việc đẩy này sẽ dừng khi tg gặp một phần tử < hơn nó,lúc này ta đặt tg vào vị trí trống của phần tử > hơn nó bị đẩy xuống cuối cùng... Kết thúc
Trang 1Ng«n ng÷ lËp tr×nh c
ThuËt gi¶i nhËp vµ s¾p xÕp d÷ liÖu cho m¶ng
Sau ®©y lµ bµi to¸n vÝ dô:
Cho m¶ng A.b¹n h·y nhËp vµ s¾p xÕp d÷ liÖu
cho m¶ng.
Trang 2 Thuật giải:
Ta thấy mảng A có N phần tử.ta sẽ chia quá
trình chèn qua n bước.sắp xếp tăng dần từ
phần tử thứ i đến n
Bước 1: ta xét phần tử A[1] ta thấy có 1 phần
tử ta không cần phải làm gì cả
Kết thúc bước 1
Trang 3Bước 2: ta bắt đầu từ phần tử thứ 2 là A[2],ta
đem A[2] so sánh với A[1]
-nếu thấy A[2]<A[1] ta lấy A[2] vào vị trí thứ nhất là A[1]
-Nếu Trường hợp A[2]>A[1] ta không làm gì cả
Trang 4Bước 3: ta bắt đầu từ phần tử thứ 3.đó là A[3] ta đem so sánh lần lượt với phần tử
A[2],A[1],
-nếu A[3]<A[2] thì mang giá trị của A[3] gán cho biến tg sau đó đẩy A[3] vào vị trí thứ
3.tiếp theo ta so sánh tg với A[1],nếu
tg<A[1] thì ta đẩy A[1] vào vị trí thứ 2 rồi
đẩy tg vào vị trí thứ nhất.ngược lại nếu tg
>A[1] thì ta đặt tg vào vị trí thứ 2
-nếu A[3]>A[2] thì ta không phải làm gì cả
Kết thúc bước 3
Trang 5Bước 4: ta bắt đầu từ A[4] ta đem A[4] so
sánh lần lượt với các phần tử đứng trên
nó,bắt đầu từ A[3]
-nếu A[4]<A[3] thì ta gán A[4] cho biến tg sau đó đấy các phần tử đứng trên nó mà
>tg ,mỗi phần tử xuống một vị trí.việc đẩy này sẽ dừng khi tg gặp một phần tử < hơn nó,lúc này ta đặt tg vào vị trí trống của
phần tử > hơn nó bị đẩy xuống cuối cùng
Trang 6+Nếu tg< hơn tất cả các phần tử đứng trên A[4] thì A[1] bị đẩy vào vị trí thứ 2,và việc đẩy lùi xuống sẽ dừng , ta đặt tg vào vị trí thứ nhất
-nếu A[4]>A[3] thì ta không phải làm gì cả.
Kết thúc bước 4
Tương tự các bước tiếp theo ta dùng thuật giải tư
ơng tự như các bước trên
Mời các bạn xem chương trình minh họa sau
Trang 7#include<conio.h>
main()
{
int A[100]; int i,j,n,tg;
printf(“nhap so pt”);
Scanf(“%d”,&n);
for (i=1;i<=n;i++)
{printf(“\n a[%d]=“,i);
Scamf(“%d”,&a[i];}
for(i=0;i <=n-1;i++)
for (j=i+1 ;j <=n ; j++);
if( a[i]<a[j] )
{A[i]=tg;
A[i]=A[j];
A[j]=tg;
} printf(“\n sau khi sap xep”); for(i=1;i<=n;i++)
printf(“%d”,A[i]);
getch();}
Trang 8Chóc c¸c b¹n thµnh c«ng