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²),适用于较小的数据量排序。
  • 相关阅读:
    React生命周期, 兄弟组件之间通信
    React组件式编程Demo-用户的增删改查
    React之this.refs, 实现数据双向绑定
    CCF CSP 201812-4 数据中心
    CCF CSP 201812-4 数据中心
    PAT 顶级 1020 Delete At Most Two Characters (35 分)
    PAT 顶级 1020 Delete At Most Two Characters (35 分)
    Codeforces 1245C Constanze's Machine
    Codeforces 1245C Constanze's Machine
    CCF CSP 201712-4 行车路线
  • 原文地址:https://www.cnblogs.com/tryitboy/p/4231137.html
Copyright © 2011-2022 走看看