面试官:手写一个冒泡排序,并对其改进( 三 )

上面的这张图 , 你多看几遍就理解了 , 每次排好都能选出来一哥当前数组的最大值 。 OK 。 如果你理解了之后 , 下面我们就开始写代码来实现一波 。

二、代码实现

1、基本实现

我们先来看一下基本的实现 。

上面的这种写法非常简单 , 不过我们可能会发现 , 每一趟其实得到是一个值 , 这个值可能是当前数组的最大值又或者是最小值 。

这样做的缺点:

数组有一部分是本来就有序的 , 每一趟冒泡那么将会在此部分浪费时间

2、改进

现在我们进行改进:如果我们换一种想法 , 每一趟扫描的时候 , 对那些有序的部分 , 设置一个标志 , 如果为true表示发生了交换 , 如果为false , 则没有发生交换 , 那么我们就可以直接跳过去了 。

3、继续改进

推荐阅读