给定一个数组进行排序,比如【8,3,4,6,1,2,5,7】这样一个数组,如何代码实现排序号,用冒泡法写一个sort方法。
思路:从第一个开始,每一个跟后面一个比较大小。比如第一次8跟3,4,6,1,2,5,7比较,第一次结束后的数组为【3,4,6,1,2,5,7,8】,第二次循环,3跟4,4跟6,6跟1,6大1,所以6跟1交换,继续,6跟2比,6跟2交换,继续,6跟5比,6跟5交换,,6跟7比较,现在数组变成了【3,4,1,2,5,6,7,8】第二次循环后,确定了数组最大的两个数7,8,所以说每循环一次就把第n-1的大小确定了。那么第三次循环就是,3跟4,4跟1,4跟2,4跟5,5跟6,得到的数组就是【3,1,2,4,5,6,7,8】依次类推,第四次 3跟1,3跟2,3跟4,4跟5,得到数组就是 【1,2,3,4,5,6,7,8】 ,现在看起来好像是已经排序好了,但实际上还是会进行第五次循环,1跟2,2跟3,3跟4,得到就是【1,2,3,4,5,6,7,8】第六次依旧1跟2,2跟3得到就是【1,2,3,4,5,6,7,8】第七次是1跟2,【1,2,3,4,5,6,7,8】
因为里层是两两比较交换,所以需要要两层for循环,第一层i是循环次数,第二层j是每次减少n-1个,因为每循环一次可以确定一个最大的数放在最后面。
有了上面的思路,我们就可以正确编写代码了,当然要实现传值倒序的话,再来一个参数reverse
=======================我是有底线的=================================
从上面的例子其实要可以到5次的时候就已经排序好了,后面的循环实际上就是在浪费时间跟系统资源,还是来做一下优化吧,那么我们就给加一个标识符,当不需要再排序的时候,我们跳出程序
(没有标识符的执行次数)
确实是只执行了5次。
(加了标识符的执行次数)