冒泡排序还能优化???
Posted 南风念
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序还能优化???相关的知识,希望对你有一定的参考价值。
今天我们来聊聊冒泡排序算法,数据结构与算法是每个IT人的必经之路,而冒泡排序是这条路上第一个“小怪”,所以让我们一起秒掉它。
冒泡排序算法原理:
设数组长度为N。
1、比较相邻的前后两个数据,如果前面数据大于后面的数据,就将这两个数据交换。
2、这样对数组的第0~N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组最后一位即N-1的位置。(相当小的数据往前跑了)
3、N = N-1,如果N不为0就重复前面两步,否则排序完成。
记得当时学冒泡排序的时候是用两个for循环解决的。像这样:
当时也没想太多,但最近才发现,原来这么简单的算法也是可以优化的!下面请欣赏CSDN上某位大佬的讲解(链接在文末):
(——注意细节)
下面对其进行优化,设置一个标志,如果这一趟发生了交换,则为true,否则为false。明显的,如果有一趟没有发生交换,说明排序已经完成。
再做进一步的优化。如果有100个数的数组,仅前面10个无序,后面90个都已排好序且都大于前面10个数字,那么在第一趟遍历后,最后发生交换的位置必定小于10,且这个位置之后的数据必定已经有序了,记录下这位置,第二次只要从数组头部遍历到这个位置就可以了。
到这里,优化方法已经讲完了,是不是想为原作的智慧点赞!不过,冒泡排序毕竟是一种效率低下的排序方法,在数据规模很小时,可以采用。数据规模比较大时,最好用其它排序方法。
温故而知新,可以为师矣,
扫描下方二维码加关注,方便随时回顾
以上是关于冒泡排序还能优化???的主要内容,如果未能解决你的问题,请参考以下文章