Tải bản đầy đủ (.doc) (3 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (66.09 KB, 3 trang )

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();
}

×