zoukankan      html  css  js  c++  java
  • 选择排序

    选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

    选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。

    值得注意的是:选择排序和冒泡排序的区别:

    冒泡排序,在每一次比较的时候,如果发现相邻两数的次序不对,都会马上就把两数进行对调。
    选择排序,则在比较过程中(内循环里面)并不进行对调,而是先记录下最小(大)数的下标,在一次扫描完成后再进行对调。

     1 void exch(int *p,int *q)
     2 {
     3     int temp;
     4     temp=*p;
     5     *p=*q;
     6     *q=temp;
     7 }
     8 
     9 void chose(int *p,int *q)
    10 {
    11         if(*p>*q)
    12                   {
    13             exch(p,q);
    14                   }
    15 }
    16 
    17 void select_sort(int *a,int left,int right)
    18 {
    19     int i,j,min;
    20     for(i = left ; i < right;i++)
    21     {
    22         min = i;
    23         for(j = i+1 ;j <= right;j++)
    24         {
    25             if(a[j] < a[min])
    26                 min = j;
    27         }
    28         exch(&a[i],&a[min]);
    29     }
    30     
    31 }

    这个算法也不多说。。。

  • 相关阅读:
    Flowplayer-Subtitle
    Flowplayer-playlist
    Flowplayer-Embedding
    Flowplayer-Skin
    Flowplayer-Setup
    Flowplayer-JavaScript API
    任务监控程序设计与实现总结
    Spark RDD整理
    oracle连接和执行流程总结
    阅读《Oracle内核技术揭秘》的读书笔记
  • 原文地址:https://www.cnblogs.com/XCoderLiu/p/3170558.html
Copyright © 2011-2022 走看看