排序之选择排序

选择排序

选择排序的基本思想是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

直接选择排序

  1. 在待排序元素集合array[i]–array[n-1]中选择关键码最大(小)的数据元素
  2. 若它不是这组元素中的最后一个(第一个)元素,则将它与这组元素中的最后一个(第一个)元素交换
  3. 在剩余的array[i]–array[n-2](array[i+1]–array[n-1])集合中,重复上述步骤,直到待排序元素集合剩余1个元素 。

选择最大的元素放在后面:
排序之选择排序_第1张图片

代码实现:

选择最大的元素放在前面:
void selectSortmax(int a[],int size){
     for(int i=0;i<size;i++){
         int max=0;
         for(int j=0;j<size-i;j++){
            if(a[j]>a[max]){
            max=j;
            }
         }
       int k=a[max];
       a[max]=a[size-i-1];
       a[size-i-1]=k;
    }
}
选择最小的元素放在前面:排序之选择排序_第2张图片

代码实现:

 void selectSortmin(int a[],int size){
     for(int i=0;i<size;i++){
         int min=i;
         for(int j=i+1;j<size;j++){
            if(a[j]<a[min]){
              min=j;
            }
         }
        int k=a[min];
         a[min]=a[i];
         a[i]=k;
     }
 }

直接选择排序的特性总结

  1. 好理解,但是效率不是很高,实际中很少使用
  2. 时间复杂度:==O(N^2) ==
  3. 空间复杂度:O(1)
  4. 稳定性:不稳定

你可能感兴趣的:(数据结构与算法)