简单插入排序详解与实战

package quickSort;
import java.util.Arrays;

public class InsertSort {
    /**
     * 直接插入排序
     * 稳定排序,时间复杂度O(n2)
     * 思路:假定待排序列中第一个数是有序序列,
     * 从第二个元素开始遍历,寻找到该元素最合适的位置后插入元素,
	 * 每经过一趟排序,都会将该有序序列扩大。
     * @param a
     * @return 一个排序号的数组
     */
	public static void insertSort(int[] a) {
        for (int i = 1; i < a.length; i++) {
			//标记待插入元素
            int temp = a[i];
			//指向待插入元素的前一个元素
            int pos = i - 1;
			//依次向前寻找比该元素大的数,并将其后移
            while (pos >= 0 && a[pos] > temp) {
				//后移
                a[pos + 1] = a[pos];
				//指向前一个数
                pos--;
            }
			//将该数替换到合适的位置
            a[pos + 1] = temp;
        }
    }
    public static void main(String[] args) {
    	int a[] = {6, 1, 1, 3, 0, 1, 0, 3, 0, 9};
        insertSort(a);
        System.out.println(Arrays.toString(a));
    }    
}

 简单插入排序详解与实战_第1张图片

详解(文字版) 

简单插入排序详解与实战_第2张图片

你可能感兴趣的:(其它,校招)