插入排序是一種簡單直觀的排序算法,它的工做原理是經過構建有序序列,對於未排序數據,在已排序的序列中從後向前掃描,找到相應位置並插入。插入排序在實現上,在從後向前掃描的過程當中,須要反覆把已排序的元素逐步向後移動,爲最新元素提供插入空間。算法
算法步驟:數組
初始化一個數組。ide
(1) 對於第1個元素,由於沒有比較,直接將其做爲有序的序列。spa
(2) 從數組中獲取下一個元素,在已經排序的元素序列中從後向前掃描,並進行判斷。若排序序列的元素大於新元素,則將該元素移動下一位置。直到找到已排序的元素小於或者等於新元素的位置。排序
(3) 重複此(2)步驟it
算法實現:table
public class InsertSort {class
public static void main(String[] args) {原理 int arr[]= {56,20,38,75,26,91,16};List System.out.println("排序前:"+Arrays.toString(arr)); sort(arr); System.out.println("排序後:"+Arrays.toString(arr)); } public static void sort(int arr[]) { int temp,j; for(int i=1;i<arr.length;i++) { temp=arr[i]; for(j=i-1;j>=0 && arr[j]>temp;j--) { arr[j+1]=arr[j]; } arr[j+1]=temp; } } } |
排序前:[56, 20, 38, 75, 26, 91, 16] 排序後:[16, 20, 26, 38, 56, 75, 91] |