33排序算法之选择排序
排序算法之选择排序
原理:从n个元素中选出一个最大元素,调到序列末端再从剩下的n-1个元素中选出最大元素……,反复如此,可完成排序。
简单选择算法:
for(k=n-1;k>0;k - -)
{
i=0;
for(j=1;j<=k;j++) if(a[j]>a[i]) i=j; //选最大元
交换a[k]与a[i];
}
实质就是,每次选择最大的值放在前面。第一个最大放在第一位,第二个大的值放在第二位。。。。。。后面的值依次排序。
选择排序源代码: //2选择排序(由位置选择数) void SelectionSort(int *arr,int num) { int i,j; for(i=0;i<num;++i)//先选好位置,再选数字 { for(j=i+1;j<num;++j)//比较,小数放第1位,第2位.。。。。。 { if(arr[i]>arr[j]) { int temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; }; }; int main() { int arr[10]={3,5,8,2,4,13,9,1,16,7}; SelectionSort(arr,10); for(int i=0;i<10;++i) printf("%d ",arr[i]); getchar(); return 0; }