冒泡排序法3.0版本+优化版本

时间:2022-11-19 07:20:44

大家晚上好呀,今天给大家带来的是冒泡排序法的最终版本,也许有比我做的更好的,所以我的仅供参考。

冒泡排序法3.0版本+优化版本

首先先对我昨天的代码进行分析,为什么会出错呢。很重要的一点就是我没有意识到printf函数是无法把数组里的元素一下子输出的,我们需要一个变量作为数组的下标,然后利用for循环把它们一个一个打印出来;所以我把它进行修改,如图

冒泡排序法3.0版本+优化版本


但是我们需要思考的就是,我们一共有5个数,然后需要4趟循环,每一趟的循环又需要4次比较元素的大小,但是我们真的需要每趟都比较四次吗?因为第一次我们需要比较4次,然后把最大的那个已经放到最后了,我们还剩下4个数要比较,这时候就是只需要比较3次了,以此类推。所以我们可以对二重循环进行优化,因为每次减少的次数都和i相似,并且比i多减一个,所以我们可以这样改

冒泡排序法3.0版本+优化版本

但是假如我们提前就已经实现了排序的话,那我们是否还用跑4遍代码呢,答案是否定的,因为这样会浪费资源,所以我们能不能想个办法,如果程序已经提前实现了排好序,我们就让它跳出程序呢?

是可以的,我们每次在一重循环里面,定义一个flag变量,每次循环开始都令它为0,然后在二重循环里再次赋值flag=1。我们的意思是只要flag在某次循环已经中没有进入二重循环,这样flag就意味着一直都等于零,然后就已经是实现了提前排好了,这时候就可以加个break,让它提前跳出来,并且打印出来,如果我们想知道是哪一次提前排好的,可以再次定义一个变量,这样就可以啦,可以看看我的做法哦

冒泡排序法3.0版本+优化版本

好啦,这次的分享就到这里啦,我们明天再见!