Thuật toán sắp xếp chọn doc

3 629 4
Thuật toán sắp xếp chọn doc

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

Thông tin tài liệu

Họ Và Tên Sinh Viên: Vũ Bảo Trung Lớp: CNTT-K2 Giáo Viên Hướng Dẫn: Ngô Tạo Vinh Đề Tài: Chương trình sắp xếp dựa trên thuật toán sắp xếp chọn. Tư tưởng: Chọn phần tử nhỏ nhất trong n phần tử ban đầu, đưa phần tử này về vị trí đúng là đầu tiên của dãy hiện hành. Sau đó không quan tâm đến nó nữa, xem dãy hiện hành chỉ còn n-1 phần tử của dãy ban đầu, bắt đầu từ vị trí thứ 2. Lặp lại quá trình trên cho dãy hiện hành đến khi dãy hiện hành chỉ còn 1 phần tử. Dãy ban đầu có n phần tử, vậy tóm tắt ý tưởng thuật toán là thực hiện n-1 lượt việc đưa phần tử nhỏ nhất trong dãy hiện hành về vị trí đúng ở đầu dãy. Các bước tiến hành như sau: Bước 1: i=1 Bước 2: Tìm phần tử a[min] nhỏ nhất trong dãy hiện hành từ a[i] đến a[n] Bước 3: Hoán vị a[min] và a[i] Bước 4: Nếu i<=n-1 thì i=i+1; Lặp lại bước 2 Ngược lại: Dừng. n-1 phần tử đã nằm đúng vị trí. Ví dụ: Cho dãy a = (12,2,8,5,1,6,4,15) 12 2 8 5 1 6 4 15 Bước 1: 1 2 8 5 12 6 4 15 Bước 2: 1 2 8 5 12 6 4 15 Bước 3: 1 2 4 5 12 6 8 15 Bước 4: 1 2 4 5 12 6 8 15 Bước 5: 1 2 4 5 6 12 8 15 Bước 6: 1 2 4 5 6 8 12 15 Bước 7: 1 2 4 5 6 8 12 15 Giải thuật: Void SelectionSort(int a[], int n) { int min; for(int i=0;i<n-1;i++) { min=i; for(int j=i+1;j<n;j++) if(a[j]<a[min]) min=j; HoanVi(a[min],a[i]); } } Code: #include <stdio.h> #include <stdlib.h> #include <conio.h> main() { int i,so; float mang[100]; printf("nhap vao so phan tu cua mang can sap xep "); scanf("%d",&so); for(i=1;i<=so;i++) { printf("nhap vao phan tu thu %d: ", i); scanf("%f",&mang[i]); } float tg; int j; for(i=1;i<=so;i++) { tg=mang[i]; int k=0; for(j=i+1;j<=so;j++) { if(tg > mang[j]) { tg=mang[j]; k=j; } } if(k!=0) { mang[k]=mang[i]; mang[i]=tg; } } printf("\nMang sap sap xep theo chieu tang dan theo thuat toan sap xep chon: "); for(i=1;i<=so;i++) { printf("\n \n%.0f", mang[i]); } getch(); } . Trung Lớp: CNTT-K2 Giáo Viên Hướng Dẫn: Ngô Tạo Vinh Đề Tài: Chương trình sắp xếp dựa trên thuật toán sắp xếp chọn. Tư tưởng: Chọn phần tử nhỏ nhất trong n phần tử ban đầu, đưa phần tử này về vị trí. hành đến khi dãy hiện hành chỉ còn 1 phần tử. Dãy ban đầu có n phần tử, vậy tóm tắt ý tưởng thuật toán là thực hiện n-1 lượt việc đưa phần tử nhỏ nhất trong dãy hiện hành về vị trí đúng ở đầu. 5 12 6 8 15 Bước 5: 1 2 4 5 6 12 8 15 Bước 6: 1 2 4 5 6 8 12 15 Bước 7: 1 2 4 5 6 8 12 15 Giải thuật: Void SelectionSort(int a[], int n) { int min; for(int i=0;i<n-1;i++) { min=i; for(int

Ngày đăng: 07/07/2014, 16:20

Từ khóa liên quan

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

Tài liệu liên quan