zoukankan      html  css  js  c++  java
  • 经典算法学习:排序之选择排序

    选择排序

    思想

    选择排序的思想非常直接,从所有序列中先找到最小的,然后放到第一个位置。之后再看剩余元素中最小的,放到第二个位置……以此类推,就可以完成整个的排序工作了。可以很清楚的发现,选择排序是固定位置,找元素。相比于插入排序的固定元素找位置,是两种思维方式。

    代码:
    1. public static void sort(int s[]) {  
    2.         for (int i = 0; i < s.length; i++) {  
    3.             int minIndex = i;  
    4.             int temp = 0;  
    5.             for (int j = i + 1; j < s.length; j++) {  
    6.                 if (s[j] < s[minIndex]) {  
    7.                     minIndex = j;  
    8.                 }  
    9.             }  
    10.             if(minIndex!=i){  
    11.                 temp = s[i];  
    12.                 s[i] = s[minIndex];  
    13.                 s[minIndex] = temp;  
    14.             }  
    15.         }  
    16.     }  


    从选择排序的思想或者是上面的代码中,我们都不难看出,寻找最小的元素需要一个循环的过程,而排序又是需要一个循环的过程。因此显而易见,这个算法的时间复杂度也是O(n*n)的。这就意味值在n比较小的情况下,算法可以保证一定的速度,当n足够大时,算法的效率会降低。并且随着n的增大,算法的时间增长很快。因此使用时需要特别注意。

    同样,选择排序进行两次遍历,时间复杂度为O(n²),适用于较小的数据量排序。
  • 相关阅读:
    [2020.11.15]CCPC Final 2019
    [2020.11.13]UOJ#424. 【集训队作业2018】count
    [2020.11.13]AtCoder Japan Alumni Group Summer Camp 2018 Day 2 K
    [2020.11.13]CF704C Black Widow
    [2020.11.13]CF765F Souvenirs
    [2020.11.13]AGC035D
    [2020.11.10]CSPS2020 翻车记
    拉格朗日反演(暂时鸽)与CF1349F2(xtq F2)
    [2020.6.20]ZJOI2020 Day1游记
    [2020.5.22]UOJ523 【美团杯2020】半前缀计数
  • 原文地址:https://www.cnblogs.com/tryitboy/p/4231137.html
Copyright © 2011-2022 走看看