5.冒泡排序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34491508/article/details/79950837

. 冒泡排序(BubbleSort)


1.   基本思想:两个数比较大小,较大的数下沉,较小的数冒起来。

2.   过程:

1.     比较相邻的两个数据,如果第二个数小,就交换位置。

2.     从后向前两两比较,一直到比较最前两个数据。最终最小数被交换到起始的位置,这样第一个最小数的位置就排好了。

3.     继续重复上述过程,依次将第2.3...n-1个最小数排好位置。

冒泡排序

3.   平均时间复杂度:O(n2)

java代码实现:

优化:

0.   针对问题:
数据的顺序排好之后,冒泡算法仍然会继续进行下一轮的比较,直到arr.length-1次,后面的比较没有意义的。

1.   方案:
设置标志位flag,如果发生了交换flag设置为true;如果没有交换就设置为false
这样当一轮比较结束后如果flag仍为false,即:这一轮没有发生交换,说明数据的顺序已经排好,没有必要继续进行下去。

2.  publicstaticvoidBubbleSort1(int[] arr){

3.   

4.     int temp;//临时变量

5.     boolean flag;//是否交换的标志

6.     for(int i=0; i<arr.length-1; i++){   //表示趟数,一共arr.length-1次。

7.   

8.         flag =false;

9.         for(int j=arr.length-1; j>i; j--){

10.  

11.            if(arr[j]< arr[j-1]){

12.                temp = arr[j];

13.                arr[j]= arr[j-1];

14.                arr[j-1]= temp;

15.                flag =true;

16.            }

17.        }

18.        if(!flag)break;

19.    }

}

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页