Lựa chọn Sắp xếp là một thuật toán tấn công hoạt động để tìm số nhỏ nhất từ một mảng và sau đó đặt nó vào vị trí đầu tiên. Mảng tiếp theo sẽ được duyệt qua sẽ bắt đầu từ chỉ mục, bên cạnh vị trí, nơi đặt số nhỏ nhất.
Quy trình sắp xếp lựa chọn
-
Chọn phần tử nhỏ nhất đầu tiên trong danh sách các phần tử và đặt nó ở vị trí đầu tiên.
-
Lặp lại tương tự cho các phần tử còn lại trong danh sách cho đến khi tất cả các phần tử được sắp xếp.
Xem xét danh sách sau -
Thẻ đầu tiên
Sm = a[0] = 30 Sm
a [1]
a [2]
a [3]
a [4]
a [2]
a [3]
a [4]
a [3]
a [4]
a [4] <$ \ square $ $ \ square $ sm 50 <40 (F) $ \ square $ 40 $ \ square $ Exchange a [3] với giá trị sm
Tham khảo quy trình đưa ra bên dưới để sắp xếp lựa chọn.
Sau đây là chương trình C cho kỹ thuật sắp xếp lựa chọn -
Khi chương trình trên được thực thi, nó tạo ra kết quả sau - 10 50 40 30 20
Thẻ thứ hai
Sm = a[1] = 50 sm
10 20 40 30 50
Thẻ thứ ba
Sm = a[2] = 40 Sm
10 20 30 40 50
Lượt đi thứ tư
Sm = a[3] = 40 Sm
Quy trình
for (i=0; i<n-1; i++){
sm=i;
for (j=i+1; j<n; j++){
if (a[j] < a[sm])
sm=j;
}
t=a[i];
a[i] = a[sm];
a[sm] = t;
}
}
Ví dụ
#include<stdio.h>
int main(){
int a[50], i,j,n,t,sm;
printf("enter the No: of elements in the list:\n");
scanf("%d", &n);
printf("enter the elements:\n");
for(i=0; i<n; i++){
scanf ("%d", &a[i]);
}
for (i=0; i<n-1; i++){
sm=i;
for (j=i+1; j<n; j++){
if (a[j] < a[sm]){
sm=j;
}
}
t=a[i];
a[i]=a[sm];
a[sm]=t;
}
printf ("after selection sorting the elements are:\n");
for (i=0; i<n; i++)
printf("%d\t", a[i]);
return 0;
}
Đầu ra
enter the No: of elements in the list:
4
enter the elements:
45
12
37
68
after selection sorting the elements are:
12 37 45 68