选择排序

来源:互联网 发布:seo关键词优化工具 编辑:程序博客网 时间:2024/05/21 00:14

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

基本思想:

n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:

①初始状态:无序区为R[1..n],有序区为空。

②第1趟排序

在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1..1]和R[2..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。

……

③第i趟排序

第i趟排序开始时,当前有序区和无序区分别为R[1..i-1]和R(i..n)。该趟排序从当前无序区中选出关键字最小的记录 R[k],将它与无序区的第1个记录R交换,使R[1..i]和R分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。

#include<stdio.h>void selectsort(int a[],int n) {for(int i=0;i<=n;i++)//进行n趟操作 {int flag=i;for(int j=i;j<=n;j++)//选出[i,n]中最小的元素,下标为flag; {if(a[j]<a[flag]){flag=j;}}int temp=a[i];a[i]=a[flag];a[flag]=temp;}}int main(){int n=0;int a[200];while(scanf("%d",&a[n])!=EOF){n++;}n--;selectsort(a,n);for (int i=0;i<=n;i++){printf("%d ",a[i]);}return 0;}



原创粉丝点击