2016_12_29(选择排序)

Posted hai5111

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2016_12_29(选择排序)相关的知识,希望对你有一定的参考价值。

选择排序的基本思想是:每一趟从待排序的记录中挑选出关键字最小的记录,按顺序放在已排好的子文件的最后,直到全部记录排好为止。(从小到大的排序)

 
直接选择排序:从待排序的所有记录中,挑选出关键字最小的记录,把它与第一个记录交换,然后在其余的记录中再选择出关键字最小的记录与第二个记录交换,如此重复下去,直到所有记录排序完成。
 
void selectsort(RECORDNOD r[], int n)
{
  int i,j;
  int k;//从头到尾,挨个记录待排的关键字(记录)的位置
  int tmp;
  for(i=0;i<=n-2;i++)//从第一个记录到倒数第二个记录
  {
    k=i;
    for(j=i+1;j<=n-1;j++)//从第i个记录到最后一个记录
    {
      if(r[j].key<r[k].key)//选择出待排序记录中最小的那个记录
        k=j;  
    }
    if(k!=i)//插入到已排好序的数据的最后
    {
      tmp=r[i];
      r[i]=r[j];
      r[j]=tmp;
    }
  }
}
 
算法复杂度分析:
总的比较次数为O(n^2);
当初始文件为正序时,移动次数为0;
当初始文件与要求的次序相反时候,总的移动次数为3(n-1);直接选择排序的平均时间复杂度为O(n^2);
 
 

以上是关于2016_12_29(选择排序)的主要内容,如果未能解决你的问题,请参考以下文章

排序_选择排序

直接选择排序

php排序介绍_冒泡排序_选择排序法_插入排序法_快速排序法

DB 排序规则与 Analysis Services 排序规则不同

排序_简单排序_选择排序

选择排序法