算法思想
從下標爲0的位置開始,爲每一個位置找到排序後應有的值,從該位置開始向後遍歷數組,找到最小的值(不妨設排序爲升序排列 ),放入該位置,接着爲下一位置尋找該位置應有的值。
#include <stdio.h>
void Select_sort(int *a, int len);
int main(void)
{
int i;
int len;
int * a;
printf("請輸入要排的數的個數:");
scanf("%d",&len);
a = (int *)malloc(len * sizeof(int));//動態分配內存
printf("請輸入要排的數:\n");
for (i = 0; i < len; i++) { //要排的數的輸入
scanf("%d",&a[i]);
}
Select_sort(a, len);
printf("排序後的結果爲:\n");
for (i = 0; i < len; i++) { //排序後結果的輸出
printf("%d\t",a[i]);
}
printf("\n");
return 0;
}
void Select_sort(int *a, int len)//選擇排序
{
int i;
int j;
int temp;
int min_num;
for (i = 0; i < len - 1; i++) {
min_num = i;
for (j = i + 1;j < len; j++) {
if (a[j] < a[i]) {
min_num = j; //存放當前最小值的下標
}
}
temp = a[i]; //交換兩下標的值
a[i] = a[min_num];
a[min_num] = temp;
}
}