经典排序二:选择排序

转载 2017年09月27日 10:21:54

思想:

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

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的增大,算法的时间增长很快。因此使用时需要特别注意。



常见经典排序算法学习总结(插入、shell、冒泡、选择、归并、快排等)

博主在学习过程中深感基础的重要,经典排序算法是数据结构与算法学习过程中重要的一环,这里对笔试面试最常涉及到的7种排序算法(包括插入排序、希尔排序、选择排序、冒泡排序、快速排序、堆排序、归并排序)进行了...
  • u010418035
  • u010418035
  • 2015年08月04日 17:53
  • 2520

八大排序算法之二元选择排序

选择排序的思想即在要排序的一组数中,选出最大(或者最小)的一个数与第一个位置的数字进行交换;然后在剩下的一组数中再找最大(或者最小)的与第二个位置进行交换,直到第n-1个元素(倒数第二个数)和第n个元...
  • qq_26627671
  • qq_26627671
  • 2015年11月11日 21:11
  • 1632

用JavaScript实现十大经典排序算法--冒泡排序

冒泡排序可谓是最经典的排序算法了,它是基于比较的排序算法,时间复杂度为O(n^2),其优点是实现简单,n较小时性能较好。 1)算法原理        相邻的数据进行两两比较,小数放在前面,大数...
  • u010297791
  • u010297791
  • 2016年12月27日 19:39
  • 1567

经典算法(二):选择排序

昨天我们学习了经典中的经典,冒泡排序,今天我们来学习另一个经典算法:选择排序。一、算法描述扫描所有的元素,得到最小的元素,并将最小的元素与左边第一个元素进行交换。再扫描除第一个位置以外的所有元素,得到...
  • SnowWitch
  • SnowWitch
  • 2016年12月22日 22:58
  • 494

经典算法与数据结构的c++实现——直接选择排序

因为是经典的算法,所以网上描述一大把,直接上个图,直观些,给记性不好的菜鸟(如我)一点儿提示。 算法很简单,遍历整个数组,依次选取最小值放到数组前面。 下面是代码(欢迎批评指点,之后应该会放到gi...
  • y277an
  • y277an
  • 2016年03月19日 08:47
  • 971

白话经典算法系列之四 直接选择排序及交换二个数据的正确实现

http://blog.csdn.net/morewindows/article/details/6671824 直接选择排序和直接插入排序类似,都将数据分为有序区和无序区,所不同的是直...
  • taotaoah
  • taotaoah
  • 2016年04月19日 10:02
  • 200

白话经典算法系列之四 直接选择排序及交换二个数据的正确实现

直接选择排序和直接插入排序类似,都将数据分为有序区和无序区,所不同的是直接播放排序是将无序区的第一个元素直接插入到有序区以形成一个更大的有序区,而直接选择排序是从无序区选一个最小的元素直接放到有序区的...
  • luyuncsd123
  • luyuncsd123
  • 2013年08月18日 01:14
  • 644

java经典算法之选择排序

经典排序算法 - 选择排序Selection sort 顾名思意,就是直接从待排序数组里选择一个最小(或最大)的数字,每次都拿一个最小数字出来, 顺序放入新数组,直到全部拿完 再简单点,对着一群数组说...
  • qq_32175491
  • qq_32175491
  • 2016年09月23日 20:09
  • 393

白话经典算法系列之四 直接选择排序及交换二个数据的正确实现

直接选择排序和直接插入排序类似,都将数据分为有序区和无序区,所不同的是直接播放排序是将无序区的第一个元素直接插入到有序区以形成一个更大的有序区,而直接选择排序是从无序区选一个最小的元素直接放到有序区的...
  • shaoqiangfan
  • shaoqiangfan
  • 2013年10月02日 22:39
  • 529

【C语言经典实例】-选择排序

本实例实现的功能是:用选择排序法对从键盘输入的10个数由小到大进行排序。 程序中用到了两个for循环语句,第一个for循环是确定位置的,即第几个位置,放置哪个数,就是确定a[i]的值,比如当i=0时...
  • Liangqi0329
  • Liangqi0329
  • 2015年08月15日 09:22
  • 388
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:经典排序二:选择排序
举报原因:
原因补充:

(最多只允许输入30个字)