基本思想
每一步将一个待排序的记录,按其顺序码大小插入当前面已经排序的字序列的合适位置,知道全部插入为止。
在计算机的实现中,为了给插入的元素腾出空间,我们需要将其所有的元素再插入之前都向右移动一位,这种算法叫做插入排序。
插入排序所需要的时间取决于输入中元素的初始顺序。
package wang.chunsen.sort;
/**
* 插入排序
*/
public class InsertSort {
public static void main(String[] args) {
int[] array = {99, 76, 9, 3, 12, 43, 45, 51};
sort(array);
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
public static void sort(int[] array) {
int N = array.length; //数组的长度
int temp; // 放于for循环外面是为了防止重复创建变
int j;
for (int i = 1; i < N; i++) {//排序的趟数
temp = array[i]; //赋给temp是为了防止索引i之前的元素向后移动覆盖了索引i的元素
j = i - 1;
for (; j >= 0 &&array[j] > temp; --j) { //将大于I 位值的元素向后移
array[j + 1] = array[j];
}
array[j + 1] = temp;
}
}
}