java 插入排序
概念:
通常人们整理桥牌的方法是一张一张的来,将每一张牌插入到其他已经有序的牌中的适当位置。在计算机的实现中,为了要给插入的元素腾出空间,我们需要将其余所有元素在插入之前都向右移动一位。与选择排序一样,当前索引左边的所有元素都是有序的,但他们的最终位置还不确定,为了给更小的元素腾出空间,它们可能会被移动。但是当索引达到数组的右端时,数组排序就完成了。和选择排序不同的是,插入排序所需的时间取决于输入中元素的初始顺序。
package com.test; import java.util.Arrays; public class InsertSort { public static void main(String[] args) { int test[] = {49,38,65,97,76,13,27,49}; sort(test); System.out.println(Arrays.toString(test)); } public static void sort(int[] a) { int j, sort; for (int i = 1; i < a.length; i ++) { // 从数组的第二个元素开始循环将数组中的元素插入 sort = a[i]; // 设置数组中的第二个元素为第一次循环要插入的元素 j = i - 1; while (j >= 0 && sort < a[j]) { a[j + 1] = a[j]; // 如果要插入的元素小于第j个元素,就将第j个元素向后移动 j --; } a[j + 1] = sort; // 直到要插入的元素不小于第j个元素,将sort插入到数组中 } } }