简单选择排序:比较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)