冒泡排序和直接选择排序都是排序中比较简单和容易实现的算法,先简单说说两者的区别:先以按照元素从小到大为:
冒泡排序:将相邻元素两两比较,如果有比较大的,就把比较大的放在右边,这样的结果就是一轮排序完毕后最大的数直接被放在了最右边,然后从左边第二个数开始比较,以此类推,直到倒数第二个数为止。
选择排序:与冒泡排序不同,选择排序采取的是从第二位开始检查,如果发现有数最小就记下该数的为止,等到检查完毕然后再把该数和第一位交换,所以选择排序每一轮可能只要一次交换,而冒泡可能要交换很多次。两者比较的次数相同,因此外层循环是一样的。
具体来说,我们以数组的排序为例
arr[]={4,3,2,1}  ,其中arr[0]=4,arr[1]=3,arr[2]=2,arr[3]=1;
冒泡排序的代码是:以上是老师提供的代码
for(int i=0;i<arr.length-1;i++){//外循环表示比较次数,要比较数组长度-1次
for(int j=0;j<arr.length-i-1;j++){//内层循环表示两两比较的次数,因为每一次比较都有一个最大值被放在右边,因此每次只需要比较数组长度-i即可for(arr[j]>arr[j+1]){//把大的值放右边
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=arr[j]
}
}
}
冒泡排序是对arr[0]到arr.length-i-1进行排序,这是一种内排序,范围是逐渐缩小的

选择排序
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
for(arr>arr[j]){//把小的值放在左边
int temp=arr;
arr=arr[j];
arr[j]=temp

}
}
选择排序比起冒泡排序来说提高了一些效率,顺便说1下冒泡排序最后一位不需要比较,选择排序从i+1位开始比较,最后一位需要比较

选择排序是a与a[i+1]到arr.length进行比较,这是一种外部排序

AJPFX对选择和冒泡两种排序的理解的更多相关文章

  1. javascript文件夹选择框的两种解决方案

    javascript文件夹选择框的两种解决方案 解决方案1:调用windows 的shell,但会有安全问题. * browseFolder.js * 该文件定义了BrowseFolder()函数,它 ...

  2. java List递归排序,传统方式和java8 Stream优化递归,无序的列表按照父级关系进行排序(两种排序类型)

    当有一个List列表是无序的,List中的数据有parentid进行关联,通过java排序成两种排序类型: 所用的测试列表最顶级无parentid,若为特殊值,修改下判断方法即可. 第一种排序:按照树 ...

  3. CList 点击表头排序 (3)两种排序的第二种

    在头两篇中介绍了CListCtrl::SortItems() 方法的使用和其中的一个排序方法,这篇介绍另一种方法 CList 点击表头排序 (1)SortItems函数 CList 点击表头排序 (2 ...

  4. CList 点击表头排序 (2)两种排序方法中其中一种

    上一篇讲解SortItem()方法如何使用,虽然都是抄别人的但是就是想让大家有个大概的了解 CList 点击表头排序 (1)SortItems函数 点击表头排序基本思路都是 1.首先响应HDN_ITE ...

  5. ch1_6_1求解两种排序方法问题

    考拉有n个字符串字符串,任意两个字符串长度都是不同的.  考拉最近学习到有两种字符串的排序方法:   1.根据字符串的字典序排序.例如: "car" < "carr ...

  6. python 两种排序方法 sort() sorted()

    python中有两种排序方法,list内置sort()方法或者python内置的全局sorted()方法 区别为: sort()方法对list排序会修改list本身,不会返回新list.sort()只 ...

  7. mysql 排序长度限制之max_length_for_sort_data以及mysql两种排序算法

    SET max_length_for_sort_data = 1024 SHOW VARIABLES LIKE '%max_length_for_sort_data%'; 查询:SELECT * FR ...

  8. 阻止事件冒泡两种方式:event.stopPropagation();和return false;

    jQuery提供了两种方式来阻止事件冒泡. 方式一:event.stopPropagation(); $("#div1").mousedown(function (event) { ...

  9. python-快速排序,两种方法→易理解

    快速排序(Quicksort)是对冒泡排序的一种改进. 快速排序由C. A. R. Hoare在1962年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另 ...

随机推荐

  1. phpexcel导出后乱码或者是打不开文件必须修复的问题

    百度了一下找到了解决办法,只要在header前面加上ob_end_clean();这句代码,清除缓冲区,这样就可以了,完美的解决了我的问题

  2. SimpleAdapter ArrayAdapter用法

    listView = (ListView) findViewById(R.id.list_main); /* String[] strings = {"A","A&quo ...

  3. js appendChild 自带remove和append两个功能

    一提到appendChild ,我们就知道是在父节点上增加子节点. 经常使用到它就是动态增加一个元素,将其加入到指定的父节点下. 其实appendChild除了这个功能之外,他还有一个功能:如果子节点 ...

  4. linux初级学习笔记九:linux I/O管理,重定向及管道!(视频序号:04_3)

    本节学习的命令:tr,tee,wc 本节学习的技能: 计算机的组成 I/O管理及重定向     管道的使用 知识点九:管理及IO重定向(4_3) 计算机组成: 运算器.控制器: CPU 存储器:RAM ...

  5. JavaScript 检查 email 地址的正则表达式

    JavaScript 检查 email 地址的正则表达式​1.代码(1)<html><head><title>Checking an email address - ...

  6. POJ-3352 Redundant Paths

    In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numbered 1..F) t ...

  7. emacs环境配置

    Cscope: 首先官网上下载cscope的源码包,解压进入,按照INSTALL的说明: ./configure make make install 但是在make时报如下错误:fatal error ...

  8. 理解Objective-C Runtime (六)super

    super 在Objective-C中,如果我们需要在类的方法中调用父类的方法时,通常都会用到super,如下所示: @interface MyViewController: UIViewContro ...

  9. 「LuoguP1627 / T36198」 [CQOI2009]中位数

    Description 给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b.中位数是指把所有元素从小到大排列后,位于中间的数. Input 第一行为两个正整数n和b,第二行为1 ...

  10. YUIDoc的使用方法小结

    一.YUIDoc概述以及安装YUIDoc是为YUI Library用来生成HTML版API文档的一系列工具集,文档的生成完全基于JavaDoc风格的代码注释规则.该工具是基于Python语言编写,并且 ...