最坏的情况: 每次交换都需要移动三次, 所以是 3(n-1)
#include <stdio.h>
//简单选择排序法
/*
按升序排序的话
首先, 从 n 个元素中,选择出最小的放到数组的开头, 这是第一次循环
第二次, 从 第二个元素开始和后面的比较, 一直到末尾, 将最小值放到第二个元素的位置
之后依次循环下去
*/
int a[8]={7,1,3,8,12,11,2,9};
void swap(int* a, int* b){
int t;
t = *a;
*a = *b;
*b = t;
}
void SimpleSort(int a[], int length){
int i, j, k ; //k 做为最小值得元素的下标
for(i = 0; i < length; i++){
k = i; //开始的时候,假设最小值是第一个元素
for(j = i +1; j < length; j++){
//如果后面的元素,有比刚定义的值大的, 则记录下标
if(a[k] > a[j]){
k = j;
}
}
if(k != i){
swap(&a[k] , &a[i]);
}
}
}
int main(int argc, char *argv[])
{
SimpleSort(a,8);
int t ; //用来遍历排序好的数组
//遍历
for(t = 0; t < 8; t ++){
printf("%d ",a[t]);
}
printf("\n");
printf("Hello, world\n");
return 0;
}