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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lzlizhi 中级黑马   /  2016-3-29 14:18  /  2705 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如题,选择排序和冒泡排序经常混为一谈,尤其是第二层for循环那里,总是感觉晕晕的,希望来人解答

7 个回复

倒序浏览
冒泡排序是将相邻的两个数进行比较,将大数调换到后面,调换完成之后再一次与后边相邻的数进行比较再调换,最后把最大的数调换到最后的位置。在进行第二轮比较,比较前n-1个数,再把最大的数调换到最后,一次类推,直到循环到第一个数。比较完成之后从小到大排序。

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

两者不同之处在于冒泡排序两两比较如果前边大于后边则马上调换,是一个大数往后调换的过程,选择排序只是记录最大值的下标,一轮比较完之后,如果最大值不是第一个值才进行调换位置,是一个大数往前调换的过程。
回复 使用道具 举报
第二层是比较的方法,你自己琢磨一下
回复 使用道具 举报
fangbuqianxing 发表于 2016-3-29 19:58
冒泡排序是将相邻的两个数进行比较,将大数调换到后面,调换完成之后再一次与后边相邻的数进行比较再调换, ...

原来如此,我原来也学过,都快忘完了,看了有想起来了,谢谢
回复 使用道具 举报
冒泡排序是相邻两数进行对比,即在第二层for循环中是j和j+1进行比较,而选择排序却是不是相邻两数对比,是第一个数先和其他所有数对比,完了再用第二个数和后面的所有数对比,即是第一层的i和第二层的j对比
回复 使用道具 举报
排序的方式不同,选择排序是一个数和所有的数比较,冒泡是相邻的两个数比较
回复 使用道具 举报
首先你需要理解选择和冒泡的排序是如何进行的;
回复 使用道具 举报
这个时候画个图,模拟一下排序的过程就理解了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马