思路
插入排序就像排一手扑克牌,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与已在手中的每张牌进行比较。
#伪代码
for j = 2 to A.length
key = A[j]
i = j - 1
while i > 0 and A[i] > key
A[i+1] = A[i]
i = i - 1
A[i+1] = key
Java实现
import java.util.*;
/**
插入排序算法
*/
public class Insertsort{
static void sort(int[] arr){
sort(arr,0,arr.length-1);
}
static void sort(int[] arr,int left,int right){
for(int j = left+1; j <= right; j++){
int key = arr[j];
int i = j - 1;
while(i >= left && arr[i] > key) {
arr[i+1] = a[i];
i--;
}
arr[i+1] = key;
}
}
}
public static void main(String[] args){
int[] arr = {1,2,6,4,5,3};
sort(arr);
System.out.println(Arrays.toStirng(arr));
}
INSERTION-SORT 在数组 A=<31,41,59,26,41,58>上的 执行过程。