冒泡排序

一、核心思想:兩兩交換,小的/大的往前。

二、過程:

第一趟,通過兩兩交換的手段,將最大/小元素頂到最末端
第二趟,…………………………………………,將次大/小元素頂到倒數第二個位置
  ……

三、時間複雜度:O(n(n-1)/2)
四、空間複雜度:O(1)
五、原址排序
六、穩定性:有相同元素,排序前和排序後相對位置不會變化,穩定。

七、代碼:

import java.util.Arrays;
public class BubbleSort {
	public static void main(String[] args) {
		//生成隨機數組
		int arr[]=getRandomArr(10,1,20);
		System.out.println("原數組:"+Arrays.toString(arr));
		//冒泡排序
		bubblesort(arr);
		System.out.println("冒泡排序後:"+Arrays.toString(arr));
	}
//冒泡排序核心算法
	public static void bubblesort(int[] arr) {
		//趟數,數組左邊元素
		for(int i=0;i<arr.length-1;i++) {
			//子趟數,數組右邊元素
			for(int j=0;j<arr.length-1;j++) {
				//兩兩比較,左邊小於右邊便交換兩者順序,爲什麼排序完爲升序?
				if(arr[i]<arr[j]) {
					swap(arr,i,j);
			}
		}
	}
}
	//生成隨機數組的方法(長度,最小值,最大值)
	public static int[] getRandomArr(int length, int min, int max) {
		int arr[]=new int[length];
		for(int i=0;i<length;i++) {
			arr[i]=(int)(Math.random()*(max-1+min)+min);
		}
		return arr;
	}
	//兩兩交換的實現方法
	public static void swap(int[] arr, int  i, int j) {
		int temp=arr[i];
		arr[i]=arr[j];
		arr[j]=temp;	
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章