八大排序算法(3)——插入排序

一、原理
將需要插入的元素之前的所有元素看做是有序的集合,將需要插入的元素之後(包括當前的元素)的所有元素看做是無序集合。將需要插入的元素和有序集合的元素從後向前一一對比,若比需要插入的元素值大,則將需要插入的元素前移一位,被對比元素後移一位,循環往復,若比需要插入的元素小,則將需要插入的元素放置在該位置

二、實現代碼

private void insertionSort(int[] array) {
	
	for(int i = 1; i < array.length; i++) {
		
		//當前需要插入至有序集合的元素值
		int current = array[i];
		//需要插入元素的位置
		int index = i;
		//如果需要插入的元素前一個位置還有其他元素並且比需要插入的元素大
		while(index-1 >=0 && array[index-1] > current) {
			//則將被對比的元素後移一位,並且指針前移一位
			array[index] = array[index-1];
			index--;
		}
		//否則說明前一個元素比需要插入的元素小,將需要插入的元素放置在該位置
		array[index] = current;
	}
	System.out.println(Arrays.toString(array));		
}

三、時間複雜度
在這裏插入圖片描述

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