所以并不是最优的排序算法。特点是简单,不需要额外的存储空间,在元素少的时候工作得好。
由于需要频繁的操作以及打印数组,先写一个小的数组工具类。代码如下:
public class arrayutils {
public static void printarray(int[] array) {
system.out.print("{");
for (int i = 0; i < array.length; i++) {
system.out.print(array[i]);
if (i < array.length - 1) {
system.out.print(", ");
}
}
system.out.println("}");
}
}
从数组的第二个元素开始,取得当前待处理的元素,插入到当前元素之前的子数组里面,直到数组的末尾。插入排序的java实现以及测试代码如下:
public class insertsorttest {
public static void insertsort(int[] array) {
if (array == null || array.length < 2) {
return;
for (int i = 1; i < array.length; i++) {
int currentvalue = array[i];
int position = i;
for (int j = i - 1; j >= 0; j--) {
if (array[j] > currentvalue) {
array[j + 1] = array[j];
position -= 1;
} else {
break;
}
array[position] = currentvalue;
public static void main(string[] args) {
int[] array = { 3, -1, 0, -8, 2, 1 };
arrayutils.printarray(array);
insertsort(array);