#include
/* 選擇排序
基本思想:從後面每次找到最小的一位放到前面已排序好的最後一位
特點:時間復雜度O(n^2)
*/
void SelectSort(int array[],int n){
int i,j;
int temp =0,flag =0;
for (i =0; i < n -1; i++) {
temp = array[i];
flag = i;
for (j = i+1; j < n; j++) {
if (array[j] < temp) { //取從i+1~n-1的最小一位放入temp
temp = array[j];
flag = j;
}
}
// 避免自身賦值,極端例子 1,2,3,4,5已經有序
if (flag != i) {
array[flag] = array[i]; // a[i]的值放到flag
array[i] = temp; // a[i]的值等於i+1~n-1的最小一位(temp)
}
}
}
int main(int argc,constchar * argv[])
{
int i =0;
int a[] = {5,4,9,8,7,6,0,1,3,2};
int len =sizeof(a)/sizeof(a[0]);
// 選擇排序
SelectSort(a, len);
for (i =0; i < len; i++) {
printf("%d ",a[i]);
}
printf("\n");
return0;
}