Giải thuật sắp xếp mảng
Chia sẻ bởi Nong Minh Hao |
Ngày 29/04/2019 |
95
Chia sẻ tài liệu: giải thuật sắp xếp mảng thuộc Bài giảng khác
Nội dung tài liệu:
Ngô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.
Bài làm
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
Bướ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]
-Nếu Trường hợp A[2]>A[1] ta không làm gì cả.
Kết thúc bước 2
Bướ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[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
Bướ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]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.
+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
#include
#include
main()
{
int A[100]; int i,j,n,tg;
printf(“nhap so pt”);
Scanf(“%d”,&n);
for (i=1;i<=n;i++)
{printf(“ 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[i]=tg;
A[i]=A[j];
A[j]=tg;
}
printf(“ sau khi sap xep”);
for(i=1;i<=n;i++)
printf(“%d”,A[i]);
getch();}
Chúc các bạn thành công
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.
Bài làm
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
Bướ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]
-Nếu Trường hợp A[2]>A[1] ta không làm gì cả.
Kết thúc bước 2
Bướ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[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
Bướ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]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.
+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
#include
#include
main()
{
int A[100]; int i,j,n,tg;
printf(“nhap so pt”);
Scanf(“%d”,&n);
for (i=1;i<=n;i++)
{printf(“ 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[i]=tg;
A[i]=A[j];
A[j]=tg;
}
printf(“ sau khi sap xep”);
for(i=1;i<=n;i++)
printf(“%d”,A[i]);
getch();}
Chúc các bạn thành công
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...
Người chia sẻ: Nong Minh Hao
Dung lượng: |
Lượt tài: 5
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)