选择排序:
也是一种基本的排序方法,
基本思想:
用一个for循环控制外层,再用一个for循环控制内层
内层循环让 除了已经排好以外的数 选出一个最小的与最前面的数交换,每次排一个数
时间复杂度:O(n^2)
代码:(升序排列)
#include<stdio.h> #define N 7 int main() { int a[N]={21,54,7,11,98,43,0}; int i,j,min,p; for(i=0;i<N-1;i++)//外循环 {min=i; //默认当前元素是最小值 for(j=i+1;j<N;j++)//每排好一个数,内层循环就从下一个元素开始 if(a[j]<a[min]) min=j; //记录最小值的坐标 if(min!=i) { p=a[min]; a[min]=a[i]; a[i]=p; } //交换最小值与最前面的元素 } for(i=0;i<N;i++) printf("%d ",a[i]); return 0; }