排序算法——选择排序

Posted 糖梦梦是女侠

tags:

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

选择排序(Selection Sort)

(1)算法思想

         给定待排序序列A[1..n],首先找出A中最小的元素,将其与A[1]交换;然后找出A中次最小元素,将其与A[2]交换......以此类推,进行n-1次循环,即可找到A中最小的n-1个元素并将其放在对应的位置,最后一个元素自然是最大的元素。由于查找到相应大小的一个元素后就将其放到对应顺序的位置上,因此,查找元素可以按照以下方式进行搜索:查找A中最小元素在A[1..n]中查找最小元素,查找第2小的元素则在A[2..n]中查找最小元素,查找第3小的最小元素在A[3..n]中进行搜索……查找第n-1小的元素在A[n-1,n]查找最小元素。具体过程如下所示:


(2)伪代码

         SELECTION-SORT(A)

          1 n ←  length[A]

          2 for i ← 1 to n-1

          3      do key ← A[i]                            //key记录要查找的最小值

          4           index ←  i                             //index记录下标

          5           for j ← i+1 to n

          6                do if  A[j] < key

          7                     then key ← A[j]

          8                             index  ← j

          9          if  k ≠ i

          10             then A[i] ↔ A[index]


(3)代码实现

void SelectionSort(int A[],int n)

    int i,j;
    for(i=0;i<n-1;i++)
    
        int key=A[i];
        int index=i;
        for(j=i+1;j<n;j++)
        
            if(A[j]<key)
            
                key=A[j];
                index=j;
            
        
        if(index!=i)
        
            A[index]=A[i];
            A[i]=key;
        
    


 
(4)算法分析 

         a.选择排序的时间复杂度:Θ(n^2)

         b.选择排序是原地排序。

         c.选择排序不是稳定排序。

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

算法(第4版)-2.1 初级排序算法

《数据结构与算法之美》08——排序冒泡排序插入排序选择排序

原地堆排序

排序应用

算法设计与分析分治法--快速排序的递归和非递归实现

排序优化