1. 程式人生 > 遊戲攻略 >《怪物獵人崛起》2.0版控制流狩獵笛配裝推薦

《怪物獵人崛起》2.0版控制流狩獵笛配裝推薦

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

一 、簡單排序

1、氣泡排序

    public static void main(String[] args) {
		int [] arr = new int[]{3,2,4,9,1};
		for(int i = 0;i < arr.length;i++){
			for(int k = 0;k < arr.length-i-1;k++){
				if(arr[k] > arr[k+1]){
					int temp = arr[k];
					arr[k] = arr[k+1];
					arr[k+1] = temp;
				}
			}
		}
		
		for(int i = 0;i < arr.length;i++){
			System.out.print("  " + arr[i]);
		}
	}

規則:

(1)比較2個數據

(2)如果左邊的值大於右邊的值,則交換位置,如果左邊的值小與右邊的值,則不動

(3)向右依次比較,直到最右邊,此時最右邊的值是陣列中最大值(這也是被稱為冒泡的原因),

(4)重新回到最左邊進行第二次排序,從左到右依次比較大小,注意因為最右邊的資料已經排好,所以這次排序只比較到,N-2的位置。N為數值的個數

。。。。。以此類推

無論何時,只要看到一個迴圈巢狀在另一個迴圈裡這個演算法的執行時間就是O(N^2)級別

冒泡演算法(N*(N-1)/2),10個數據比較45次,進行45次交換。

2、選擇排序

	public static void main(String[] args) {
		int [] arr = new int[]{3,2,4,9,1};
		int sign;
		for(int i = 0;i < arr.length-1;i++){
			sign = i;
			for(int k = i+1;k < arr.length;k++){
				if(arr[k] < arr[sign]){
					sign = k;
				}
			}
			int temp = arr[i];
			arr[i] = arr[sign];
			arr[sign] = temp;
		}
		
		for(int i = 0;i < arr.length;i++){
			System.out.print("  " + arr[i]);
		}
	}

規則:

(1)首先將所有資料掃描一遍,找出最小的值並和最左邊的值交換,即0下標位置

(2)再次掃描時從1下標開始,因為首次掃描時最左邊資料0下標已經是最小值了

注意:sign = i,如果當前arr[k]<arr[i]為false的話,陣列是保持不變的

選擇排序是氣泡排序的改進版,將必要的交換次數從O(N^2)減少到O(N),但比較次數並沒有減少,仍為N*(N-1)/2,10個數據比較45次,但只進行10次交換。

選擇演算法(N*(N-1)/2),10個數據比較45次,但只進行10次交換。

3、插入排序

	public static void main(String[] args) {
		int [] arr = new int[]{1,2,3,9,4,5,6};
		int in,out;
		for(out = 1;out < arr.length;out++){
			int temp = arr[out];
			in = out;
			while(in > 0 && arr[in-1] >= temp){
				arr[in] = arr[in-1];
				--in;
			}
			arr[in] = temp;
		}
		for(int i = 0;i < arr.length;i++){
			System.out.println(arr[i]);
		}
	}

規則:

(1)記錄標記的數值temp

(2)用標記數值與標記左側資料依次比較,比較值大於標記值,則比較值右移一位

(3)在每趟結束時,在將temp插入後,比out變數下標號小的資料項都是有序的

插入排序的效率

在第一趟排序中,它最多比較一次,第二趟兩次,依此類推。

1+2+3+......+N-1=N(N-1)/2

因為每趟排序在發現插入點之前,平均只有全體資料的一半真的進行了比較。所以除以2

N(N-1)/4

複製的次數大致等於比較的次數。然而,一次複製與一次交換耗費的時間是不同的,所以相對於隨機資料,這個演算法比冒泡快一倍,比選擇排序略快

對於隨機順序的資料進行插入排序也需要O(N^2)時間級

轉載於:https://my.oschina.net/kdy1994/blog/888305