简单选择排序
最好最坏的比较次数一样多。
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
//平均时间复杂度O(n^2)
//空间复杂度O(1)
//最优时间复杂度O(n^2)
//最坏时间复杂度O(n^2)
//不稳定
#include <stdio.h>
void swap(int *a, int *b){
int temp = *a;
*a = *b;
*b = temp;
}
void SimpleSelectSort(int a[], int n){
int i, j, min = 0;
for (i = 0; i < n; i++) {
min = i;
for (j = i+1; j <= n; j++) {
if (a[min] > a[j]) {
min = j;
}
}
if (i != min) {
swap(&a[min], &a[i]);
}
}
}
int main(){
int a[8];
printf("Please input the number:\n");
for(int i=0;i<8;i++)
scanf("%d",&a[i]);
SimpleSelectSort(a, 8);
for (int i=0; i<8; i++) {
printf("%d\n",a[i]);
}
return 0;
}