经典排序二:选择排序

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



相关文章推荐

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

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

经典算法1_选择排序

package java基础知识.数组和常用算法; import java.util.Scanner; public class 经典算法1_选择排序 { /** * @pa...
  • Ding_GS
  • Ding_GS
  • 2012年05月25日 21:25
  • 136

经典算法——选择排序法

选择排序法将数组元素分为有序区、无序区,其主要思想是:        设想存在一个有序数列里面没有任何元素,还有一个无序数列即是给出的数列,然后在无序数列中每次选择一个最小的元素,放入到有序数列中去。...

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

http://blog.csdn.net/morewindows/article/details/6671824 直接选择排序和直接插入排序类似,都将数据分为有序区和无序区,所不同的是直...

图示经典算法--选择排序

选择排序 找到数组中最小的元素a 将a和数组的第一个元素交换位置(如果第一个元素就是最小的元素那么a就和自己交换) 在剩余的元素中找到最小的元素,将它和数组的第二个元素交换位置 如此往复,直到将整个数...
  • qdudz
  • qdudz
  • 2016年03月23日 19:00
  • 201

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

直接选择排序和直接插入排序类似,都将数据分为有序区和无序区,所不同的是直接播放排序是将无序区的第一个元素直接插入到有序区以形成一个更大的有序区,而直接选择排序是从无序区选一个最小的元素直接放到有序区的...

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

本实例实现的功能是:用选择排序法对从键盘输入的10个数由小到大进行排序。 程序中用到了两个for循环语句,第一个for循环是确定位置的,即第几个位置,放置哪个数,就是确定a[i]的值,比如当i=0时...

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

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

java经典算法之选择排序

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

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

选择排序原理选择排序是一种简单排序算法。这是一个基于位置比较的算法,通常实现是左边是已经排好序的元素列表,右边是待排序的元素。当然,一开始的时候,我们认为都是未经排序的。选择排序的精髓:与冒泡排序不同...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:经典排序二:选择排序
举报原因:
原因补充:

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