giải thuật sắp xếp mảng

8 622 1
giải thuật sắp xếp mảng

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

Thông tin tài liệu

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

Ngày đăng: 24/06/2013, 01:25

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan