排序算法——插入排序

插入排序(Insertion Sort)的算法描述是一種簡單直觀的排序算法。它的工作原理是通過構建有序序列,對於未排序數據,在已排序序列中從後向前掃描,找到相應位置並插入。

插入排序的平均時間複雜度爲 


具體算法描述如下:

  1. 從第一個元素開始,該元素可以認爲已經被排序
  2. 取出下一個元素,在已經排序的元素序列中從後向前掃描
  3. 如果該元素(已排序)大於新元素,將該元素移到下一位置
  4. 重複步驟3,直到找到已排序的元素小於或者等於新元素的位置
  5. 將新元素插入到該位置後
  6. 重複步驟2~5

package sortAlgorithm;

public class sortList {
	//int[]從左至右排序爲從小->大
	/**
	 * 插入排序
	 * 默認arr[0]是一個已經排序好的數,雖然只有一個數,
	 * 第一輪開始,從第二個數arr[1]和arr[0]比較,如果小於arr[0],
	 * arr[0]就挪到arr[1],跳出內部循環,到外部循壞內部時,arr[0]已經被往後挪了(雖然他的值還有),
	 * 所以外部循環時再把被擠掉的數據放到arr[0]處
	 */
	public static int[] insertSort(int[] arr){
		for(int i=1;i<arr.length;i++){
			int temp = arr[i];
			int flag = i;
			while((temp < arr[flag-1]) && (flag > 0)){
				arr[flag] = arr[flag - 1];
				flag--;
			}
			arr[flag] = temp;
		}
		return null;
	}

	public static void main(String[] args){
		int[] arr = {1,10,2,5,3,5,23,6,9,8};
		System.out.println("排序前數組:");
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]+" ");
		}
		insertSort(arr);
		System.out.println("");
		System.out.println("排序後數組:");
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]+" ");
		}
	}
}



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