我的算法练习之路--排序算法(1)

我的算法练习之路–排序算法


  • 之前早就接触过CSDN,但是从未在这里发过东西,所以想着学点什么.本人菜鸡,大学三年浑浑噩噩,差不多已经快要毕业了,没有那种语言是擅长的,最近看着室友疯狂撸算法,自诩逻辑感良好的我也来试试吧,目前我对算法的了解仅限于课堂.只是在此博客记录我的学习经过,不值得参考借鉴,希望多多批评.

冒泡排序

1.分析和简介,这位博主说的很明了了
https://blog.csdn.net/guoweimelon/article/details/50902597
2.我自己的理解
冒泡排序比较简单,逻辑也很清楚,每一步都沉入一个最大(最小)数

算法的关键问题在于,怎么确定是否已经排好序,或者排序什么时候结束?

那么我们就有必要来设置一个指针,指向每一步筛选出来的最大(小)值的位置,即:每进行一次冒泡排序,指针向前移动一个位置.如果这个指针指向数组的第一个,说明排序完毕.

这样的话,就能保证排序的正确性.也就是说,数组的长度是多少,我们就要进行多少次冒泡排序.但是,有没有这样的情况存在,假设数组长度为n,在进行了m(小于n)次排序后,数组就已经排序完毕,这是就没有必要在进行后面的了.如何处理这种情况?

其实,这种情况我们只需在排序过程中加一个标志变量就可以了,如果本次排序中发生了数字交换,就置flag为1,否则为0,如果没发生交换,就说明排序已经完成,直接return就行.

…..持续更新中……

猜你喜欢

转载自blog.csdn.net/fly_fly_fly_pig/article/details/80313066