我的算法练习之路–排序算法
- 之前早就接触过CSDN,但是从未在这里发过东西,所以想着学点什么.本人菜鸡,大学三年浑浑噩噩,差不多已经快要毕业了,没有那种语言是擅长的,最近看着室友疯狂撸算法,自诩逻辑感良好的我也来试试吧,目前我对算法的了解仅限于课堂.只是在此博客记录我的学习经过,不值得参考借鉴,希望多多批评.
冒泡排序
1.分析和简介,这位博主说的很明了了
https://blog.csdn.net/guoweimelon/article/details/50902597
2.我自己的理解
冒泡排序比较简单,逻辑也很清楚,每一步都沉入一个最大(最小)数
算法的关键问题在于,怎么确定是否已经排好序,或者排序什么时候结束?
那么我们就有必要来设置一个指针,指向每一步筛选出来的最大(小)值的位置,即:每进行一次冒泡排序,指针向前移动一个位置.如果这个指针指向数组的第一个,说明排序完毕.
这样的话,就能保证排序的正确性.也就是说,数组的长度是多少,我们就要进行多少次冒泡排序.但是,有没有这样的情况存在,假设数组长度为n,在进行了m(小于n)次排序后,数组就已经排序完毕,这是就没有必要在进行后面的了.如何处理这种情况?
其实,这种情况我们只需在排序过程中加一个标志变量就可以了,如果本次排序中发生了数字交换,就置flag为1,否则为0,如果没发生交换,就说明排序已经完成,直接return就行.
…..持续更新中……