插入排序: 插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外,而第二部分就只包含这一个元素。在第一部分排序后,再把这个最后元素插入到此刻已是有序的第一部分里的位置。
/**
* 插入排序:每次都是把数列分为两个部分-->一个数列和一个元素x。数列的长度每次会增加1,而元素即是原数列除去第一数列剩余部分的第一个元素。
* 每次x与第一个数列的各个元素 ,从序列的底部开始,进行比较,如若x小于与之比较的元素,则与之比较的元素后移一位,与此元素后面的元素互换位置.
*
* @param array
* @return sorted array
*/
public static int[] insertSort(int[] array) {
for (int i = 1; i < array.length; i++) {
// 取得要插入的元素
int temp = array[i];
int j = i;
// 判断要插入的元素是否小于第一数列的元素,寻找合适的位置
while (j > 0 && array[j - 1] > temp) {
// 两个元素互换位置
array[j] = array[j - 1];
array[j - 1] = temp;
j--;
}
}
return array;
}
}