https://www.cnblogs.com/jingmoxukong/p/4303289.html
1、简单选择排序的基本思想
(1)从待排序序列中,找到关键字最小的元素;
(2)如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换;
(3)从余下的 N - 1 个元素中,找出关键字最小的元素,重复(1)、(2)步,直到排序结束。
如图所示,每趟排序中,将当前第 i 小的元素放在位置 i 上。
2、核心代码
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
int i,j,k;
int l;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(j=0;j<n-1;j++)
for(k=j+1;k<n;k++)
{
if(a[j]>a[k])
{
l=a[j];
a[j]=a[k];
a[k]=l;
}
}
for(i=0;i<n;i++)
{
if(i==0)
printf("%d",a[i]);
else
printf(" %d",a[i]);
}
return 0;
}
3、算法分析
简单选择排序是一种选择排序。
平均复杂度:O(N方)
最坏时间复杂度:O(N方)
最好时间复杂度:O(N方)
空间复杂度:O(1)
4、算法稳定性
相同元素的前后顺序发生改变,所以简单选择排序是一种不稳定排序算法。