直接插入排序详解
原理:
把第一个数看成有序数组,其他数看成无序数组,每次从无序数组中取出第一个插入有序数组中使有序数组仍然有序。
例如
1.原数组
[5,3,7,6,4,1,0,2,9,10,8]
2.第一个数为有序数组,其余的为无序数组,从无序数组中取出第一个数3,插入有序数组中,使有序数组仍然有序,则为[3,5],所以插入一个数之后整个数组为:
[3,5,7,6,4,1,0,2,9,10,8]
3.重复上述操作,取出无序数组中的第一个数7,插入有序数组[3,5]中,有序数组变成[3,5,7],整个数组变成:
[3,5,7,6,4,1,0,2,9,10,8]
4.重复上述操作...有序数组为[3,5,6,7]。
[3,5,6,7,4,1,0,2,9,10,8]
5.以此类推,直到数组所有数字有序。
[0,1,2,3,4,5,6,7,8,9,10]
java代码
package four;
/**
* 直接插入排序:把第一个数看成有序数组,其他数看成无序数组,每次从无序数组中取出第一个插入有序数组中
* 使有序数组仍然有序。
*/
public class DirectInsertSort {
public static void main(String[] args) {
int[] array1 = {5,3,7,6,4,1,0,2,9,10,8};
sort(array1);
}
private static int[] sort(int[] array){
for (int i = 1; i < array.length-1; i++) {
if (array[i] < array[i-1]){
int temp = array[i];
int j = i-1;
while (j >= 0 && temp < array[j]){
array[j+1] = array[j];
j--;
}
array[j+1] = temp;
}
}
return array;
}
}