冒泡排序问题
答案:6 悬赏:10 手机版
解决时间 2021-02-12 18:41
- 提问者网友:活着好累
- 2021-02-11 18:01
如何理解冒泡排序,代码代码搞懂了 但是给别人讲不懂。 给一个好理解的生动例子即可
最佳答案
- 五星知识达人网友:举杯邀酒敬孤独
- 2021-02-11 19:17
冒泡么,就是气泡往上冒
比如按从小到大排序,冒泡排序就是每次都把最小那个数冒上来,排第一;然后剩下的里面又取最小的冒上来,最终就是从小到大排序了
比如按从小到大排序,冒泡排序就是每次都把最小那个数冒上来,排第一;然后剩下的里面又取最小的冒上来,最终就是从小到大排序了
全部回答
- 1楼网友:洒脱疯子
- 2021-02-11 23:44
楼下的解释不错
- 2楼网友:轻雾山林
- 2021-02-11 22:53
冒泡排序是一种用时间换空间的排序方法,最坏情况是把顺序的排列变成逆序,或者把逆序的数列变成顺序。在这种情况下,每一次比较都需要进行交换运算。举个例子来说,一个数列 5 4 3 2 1 进行冒泡升序排列,第一次大循环从第一个数(5)开始到倒数第二个数(2)结束,比较过程:先比较5和4,4比5小,交换位置变成4 5 3 2 1;比较5和3,3比5小,交换位置变成4 3 5 2 1……最后比较5和1,1比5小,交换位置变成4 3 2 1 5。这时候共进行了4次比较交换运算,最后1个数变成了数列最大数。
第二次大循环从第一个数(4)开始到倒数第三个数(2)结束。进行3次比较交换运算。
……
所以总的比较次数为 4 + 3 + 2 + 1 = 10次
对于n位的数列则有比较次数为 (n-1) + (n-2) + ... + 1 = n * (n - 1) / 2,这就得到了最大的比较次数
而o(n^2)表示的是复杂度的数量级。举个例子来说,如果n = 10000,那么 n(n-1)/2 = (n^2 - n) / 2 = (100000000 - 10000) / 2,相对10^8来说,10000小的可以忽略不计了,所以总计算次数约为0.5 * n^2。用o(n^2)就表示了其数量级(忽略前面系数0.5)。
- 3楼网友:骨子里都是戏
- 2021-02-11 22:00
说理论难听懂,你随便把段数据放进去演示就行了。
最好是根据代码逐步讲解。
- 4楼网友:持酒劝斜阳
- 2021-02-11 21:12
就是讲需要的东西像泡泡那样一个一个弄到前面来
- 5楼网友:猎心人
- 2021-02-11 20:53
自己多写几串数字,用冒泡排序,一步步的排,几次就明白了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯