经典排序二:选择排序

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



数据结构JAVA版2017教学视频课程

本课程共28个教学视频课程,22小时的教学时间,深入浅出的理论讲解,用JAVA语言实现每个知识点的代码,大量的上机练习题讲解,通过家家乐停车场,佳佳乐彩票机,佳佳乐通讯录,编译原理的语法分析等项目的综合应用实训,上课PPT,上课源代码等资料可以直接下载使用
  • 2017年03月31日 13:31

经典排序例题

请设计一个高效算法,判断数组中是否有重复值。必须保证额外空间复杂度为O(1)。 给定一个int数组A及它的大小n,请返回它是否有重复值。 import java.util.*;...
  • qq_23871147
  • qq_23871147
  • 2017-07-23 15:53:08
  • 106

算法实现之简单选择排序、二元选择排序和堆排序

简单选择排序 基本思想: 在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数...
  • Benjamin1083
  • Benjamin1083
  • 2016-05-09 22:12:00
  • 593

排序算法(二)——选择排序及改进

选择排序 基本思想 冒泡排序中有一个缺点,比如,我们比较第一个数a1与第二个数a2的时候,只要a1比a2大就会交换位置,但是我们并不能确定a2是最小的元素,假如后面还有比它更小的,该元素还会与a2...
  • u012152619
  • u012152619
  • 2015-08-06 00:03:35
  • 2287

经典排序算法的详细分析及C++实现代码

1、冒泡排序  O(n2) 每一次把最大的移动到最右端,第一次从0~n-1中找到最大的放到n-1处,第二次从0~n-2中找到最大的放到n-2处…… classBubbleSort { publ...
  • DjangoBUAA
  • DjangoBUAA
  • 2016-01-08 17:30:02
  • 2473

七种经典排序算法最全攻略

经典排序算法在面试中占有很大的比重,也是基础。包括冒泡排序,插入排序,选择排序,希尔排序,归并排序,快速排序,堆排序。希望能帮助到有需要的同学。全部程序采用JAVA实现。 本篇博客所有排序实现均默认...
  • ls5718
  • ls5718
  • 2016-07-02 10:10:44
  • 3607

排序算法基本思想之比较

排序
  • Ashenyongye
  • Ashenyongye
  • 2016-09-19 16:56:24
  • 2792

“深入理解”—选择排序算法

选择排序算法有两种:直接选择排序和堆排序
  • qq_25827845
  • qq_25827845
  • 2016-07-10 11:37:25
  • 7330

数据结构 - 树形选择排序 (tree selection sort) 详解 及 代码(C++)

树形选择排序 (tree selection sort) 详解 及 代码本文地址: http://blog.csdn.net/caroline_wendy算法逻辑: 根据节点的大小, 建立树, 输出树...
  • u012515223
  • u012515223
  • 2014-06-11 11:18:04
  • 2462

十大经典排序算法总结——Java实现

引 这段时间博主逐步替换为Java的实现 //博主留 2017.9.15 //2017.10.10完成冒泡排序的修改 //2017.10.11完成选择排序、插入排序和希尔排序的修改 //2017.1...
  • WangQYoho
  • WangQYoho
  • 2016-09-19 12:12:01
  • 3199
收藏助手
不良信息举报
您举报文章:经典排序二:选择排序
举报原因:
原因补充:

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