这个很好理解。
直接选择排序:
时间复杂度:O(n^2)
//直接选择排序
#include <stdio.h>
#define MAX 10
void SelectSort(int arr[])
{
int i,j,k,n;
for(i = 0; i < MAX - 1; i++) //循环遍历整个数组找到最小的那个数
{
k = i; //k用来记录最小的那个数的下标
for(j = i + 1; j < MAX; j++) //循环与后面的数进行比较
if(arr[k] > arr[j])
k = j;
if(k != i) //若最小的不是原来初始的那个,则将最小的与初始的进行交换
{
n = arr[i];
arr[i] = arr[k];
arr[k] = n;
}
}
}
int main()
{
int i;
int arr[MAX] = {12, 45, 23, 45, 56, 74, 78, 89, 45, 56};
SelectSort(arr);
for(i = 0; i < MAX; i++)
printf("%d ", arr[i]);
printf("\n");
return 0;
}