冒泡排序(Java实现及其改进)

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

冒泡排序就是直接交换排序,依次比较两个相邻的元素,如果他们的顺序错误就把他们交换过来。如升序:如果第一个比第二个大就交换,对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对)。
时间复杂度O(N^2),稳定排序算法。

	public static void bubbleSort(int[] a){
		for(int i = 0; i < a.length - 1; i++){
			for(int j = 0; j < a.length - i - 1; j++){
				if(a[j] > a[j + 1]){
					int tmp = a[j];
					a[j] = a[j + 1];
					a[j + 1] = tmp;
				}
			}
		}
	}

改进:当某一趟判断后,发现未进行一次交换,说明此时已经有序,则不需要再进行下趟判断和交换。

	public static void bubbleSort2(int[] a){
		boolean needExchange = true;
		for(int i = 0; i < a.length - 1 && needExchange; i++){
			needExchange = false;
			for(int j = 0; j < a.length - i - 1; j++){
				if(a[j] > a[j + 1]){
					int tmp = a[j];
					a[j] = a[j + 1];
					a[j + 1] = tmp;
					needExchange = true;
				}
			}
		}
	}

猜你喜欢

转载自blog.csdn.net/qq_33054265/article/details/82708676