黑马程序员技术交流社区

标题: 选择排序和冒泡排序怎么理解 [打印本页]

作者: lzlizhi    时间: 2016-3-29 14:18
标题: 选择排序和冒泡排序怎么理解
如题,选择排序和冒泡排序经常混为一谈,尤其是第二层for循环那里,总是感觉晕晕的,希望来人解答

作者: fangbuqianxing    时间: 2016-3-29 19:58
冒泡排序是将相邻的两个数进行比较,将大数调换到后面,调换完成之后再一次与后边相邻的数进行比较再调换,最后把最大的数调换到最后的位置。在进行第二轮比较,比较前n-1个数,再把最大的数调换到最后,一次类推,直到循环到第一个数。比较完成之后从小到大排序。

选择排序是设定一个变量k存放最大值的下标,假设第一个数是最大值,与后边相邻的数一次进行比较,假如后边的数大于前边的数,则把大数的下标值赋值给k,当一轮比较完成之后,最大数是带k下标的数组元素,看最大值是否是第一个数,如果不是,把第一个数与最大数进行交换,第一个数变为最大数,紧接着进行第二轮比较,比较余下的数,以此类推比较完成之后,数值从大到小排列。

两者不同之处在于冒泡排序两两比较如果前边大于后边则马上调换,是一个大数往后调换的过程,选择排序只是记录最大值的下标,一轮比较完之后,如果最大值不是第一个值才进行调换位置,是一个大数往前调换的过程。

作者: Sniper-L    时间: 2016-3-31 00:49
第二层是比较的方法,你自己琢磨一下
作者: muzipiao    时间: 2016-3-31 09:30
fangbuqianxing 发表于 2016-3-29 19:58
冒泡排序是将相邻的两个数进行比较,将大数调换到后面,调换完成之后再一次与后边相邻的数进行比较再调换, ...

原来如此,我原来也学过,都快忘完了,看了有想起来了,谢谢
作者: a157051803    时间: 2016-4-1 00:51
冒泡排序是相邻两数进行对比,即在第二层for循环中是j和j+1进行比较,而选择排序却是不是相邻两数对比,是第一个数先和其他所有数对比,完了再用第二个数和后面的所有数对比,即是第一层的i和第二层的j对比
作者: 堕落天使    时间: 2016-4-1 12:22
排序的方式不同,选择排序是一个数和所有的数比较,冒泡是相邻的两个数比较
作者: tdwydan1    时间: 2016-4-1 20:56
首先你需要理解选择和冒泡的排序是如何进行的;
作者: 张立鹏    时间: 2016-4-1 21:37
这个时候画个图,模拟一下排序的过程就理解了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2