A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王鹏华ios0826 中级黑马   /  2015-9-1 21:37  /  1251 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

关于选择排序和冒泡排序大家都是怎么理解的呢!

8 个回复

倒序浏览
同不懂,数学是体育老师教的
回复 使用道具 举报
都蒙圈了....
回复 使用道具 举报
我的理解的就是,冒泡排序是每一次都可能要交换
而选择排序是在比较时记下a[i]的位置 最后来交换
所以他们的交换过程是不一样的 而查找的过程是一样的
回复 使用道具 举报
视频讲的理解不了
回复 使用道具 举报
选择排序和冒泡排序都是一种算法,最快的希尔排序,三层循环加着位运算。
选择排序是去一个固定位置和其余值进行比较,如果大于就交换位置,比较完成一次最值出现在最左边
冒泡排序是相邻比,比较完成最值出现在最右边(就如同水冒泡一样)
回复 使用道具 举报
数学老师已经开始学编程了,
回复 使用道具 举报
教你一个简单地理解方法:选择排序是让左边的第一个位置不动,后面的数字依次和第一个位置比较,得到第一个位置最小,第二个位置原理和第一个位置一样,依次后推.
    冒泡排序是从第一个和第二个比较,大的数放在后面,依次后推,最后一个数就是最大,让最后一个数不动,前面的0到n-1的位置再按上面原理比较.
     记忆技巧:选择排序是从左一个数一个数的截去,也就是程序外层for(int i=0;i<len-1;i++)--里层for(int j=i+1,j<len;j++)控制头一个位置不动,后面依次和它比较,第三个不同是if(arr[i]>arr[j])判断条件不同(原因是此循环是内层i和外层j交换的).而冒泡排序是从右边最后一个位置往前一个一个数截去,也就是程序外层for(int i=0;i<len-1;i++)--里层for(int j=0,j<len-1-i;j++)是导致交换两个数的,交换这两数这个层次上讲和外层for没关系,因此判断条件为if(arr[j]>arr[j+1]),
       区别:内层for(语句1;语句2;)和if(交换两个数的下坐标){交换两个数的下坐标}这3个位置不一样,其他程序都一样.
回复 使用道具 举报
选择排序 1跟2比-1跟3比-1跟4比
冒泡排序 1跟2比-2跟3比-3跟4比
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马