总共需要运行n趟操作(0<=i<n),每趟操作选出待排序部分[i,n]中最小的元素,令其与a[i]交换。因此总复杂度为O(n²)。代码如下:
#include<stdio.h>
#include<string.h>
int main(){
int a[5]={3,1,2,4,5};
printf("%d\n",sizeof(a)/sizeof(a[0]));
for(int i=0;i<5;i++){
int k=i;
for(int j=i;j<5;j++){
if(a[j]<a[k]){
k=j;
}
}
int temp=a[i];
a[i]=a[k];
a[k]=temp;
}
for(int i=0;i<5;i++){
printf("%d ",a[i]);
}
return 0;
}