冒泡排序法没看懂
答案:3 悬赏:80
解决时间 2021-02-07 18:14
- 提问者网友:妖精ξ也會哭
- 2021-02-06 21:40
冒泡排序法没看懂
最佳答案
- 二级知识专家网友:飘零作归宿
- 2021-02-06 23:15
我给你说一下冒泡的原理吧:
冒泡冒泡,顾名思义,就是往上走的意思。
冒泡排序是要依靠两层循环,外层控制次数,内层逐个比较。
第一次外层循环将最大(最小)的值放到最上面(数组最后面);
第二次外层循环把第二大(小)的值放到从上往下第2个位置:(数组最后一个)
那么,每一次外层循环,内层的循环只需要循环从1到总长度减外层次数的长度,这就是:
for(int j=0;j
然后实现把最大(最小)的值放到最后面的方法是挨着的两个数依次做判断。这就是:
if(arr[j]
你的这个排序是要把最小的放到最后面,也就是从大到小的排序。
我估计你对边界:j
这是因为在下面的判断里面你是把当前值和后面一个值做比较的。如果不减1,则当循环到最后一个值的时候,再取下一个值就取不到,就需要额外的操作,或者抛出数组下标越界的异常。
冒泡冒泡,顾名思义,就是往上走的意思。
冒泡排序是要依靠两层循环,外层控制次数,内层逐个比较。
第一次外层循环将最大(最小)的值放到最上面(数组最后面);
第二次外层循环把第二大(小)的值放到从上往下第2个位置:(数组最后一个)
那么,每一次外层循环,内层的循环只需要循环从1到总长度减外层次数的长度,这就是:
for(int j=0;j
然后实现把最大(最小)的值放到最后面的方法是挨着的两个数依次做判断。这就是:
if(arr[j]
你的这个排序是要把最小的放到最后面,也就是从大到小的排序。
我估计你对边界:j
全部回答
- 1楼网友:孤伤未赏
- 2021-02-07 00:06
写几个无序的数字,按照程序一步一步来,你就知道了,而且印象深刻,绝对忘不了!!!
- 2楼网友:说多了都是废话
- 2021-02-06 23:37
那个大小比较是说,如果前一个数比后一个小,则交换位置;
假设有n个数(n就是上边程序中的arr.length)
第一次冒泡排序(这时候i=0),最大的数就排在了最后。
所以第二次(这时候i=1)排序的时候就从第一个开始比较到倒数第二个就可以了,
这样,第三次排序只需比较到倒数第三个
第i次比较,只需要比较到(n-i)个,也就是下标为(n-i-1)的数
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯