简单选择排序:比较n-1趟,每次找出最小的那个值,用min记录下标,然后交换i与min中的值简单选择时间复杂度为O(N^2),性能上要略优于冒泡排序,因为交换次数少
C实现
//简单选择排序
#include<stdio.h>
int main()
{
int i,j,n,t,min;
int a[101]={0};
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
for(i=1;i<=n-1;i++)
{
min=i;
for(j=i+1;j<=n;j++)
{
if(a[min]>a[j]) //如果是从大到小,则换成a[j]<a[j+1]
min=j;
}
if(i!=min)
{
t=a[i];
a[i]=a[min];
a[min]=t;
}
}
for(i=1;i<=n;i++)
printf("%d ", a[i]);
return 0;
}
Python实现
def select_sort(lists):
for i in range(len(lists)-1):
min =i
for j in range(i+1,len(lists)):
if lists[j] < lists[min]:
min=j
if min!=i:
lists[i],lists[min]=lists[min],lists[i]
if __name__=='__main__':
eles = input('intput elements:').strip().split()
list = [int(ele) for ele in eles]
select_sort(list)
print(list)