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

     

    今天继续介绍排序算法系列的第二讲,选择排序。选择排序也是一种常见的排序方法,非常简单。废话不说,来看看吧。

    思想

    还是先来看看选择排序的思想。选择排序的思想非常直接,不是要排序么?那好,我就从所有序列中先找到最小的,然后放到第一个位置。之后再看剩余元素 中最小的,放到第二个位置……以此类推,就可以完成整个的排序工作了。可以很清楚的发现,选择排序是固定位置,找元素。相比于插入排序的固定元素找位置, 是两种思维方式。不过条条大路通罗马,两者的目的是一样的。

    代码

    复制代码
        for(int i=0; i<v.size(); i++){
    int min = v[i];
    int temp;
    int index = i;
    for(int j=i+1;j<v.size();j++){
    if(v[j] < min){
    min = v[j];
    index = j;
    }
    }

    temp = v[i];
    v[i] = min;
    v[index]= temp;
    }
    复制代码

    分析

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

  • 相关阅读:
    Poj(1703),种类并查集
    Poj(2236),简单并查集
    Poj (3239),m皇后问题
    Poj(1521),哈夫曼编码
    NYOJ(680),摘枇杷,(暴力,或者二分搜索)
    NYOJ(42)欧拉图
    数集合有多少个TOJ(2469)
    HDU(1016),打素数环
    HDU(4394),数论上的BFS
    Poj(2225),三维BFS
  • 原文地址:https://www.cnblogs.com/bb3q/p/4497357.html
Copyright © 2011-2022 走看看