思路分析:插入排序的核心就是通过数的对比,移动。实现排序。详细思路:每次排序时,将数据分为2组:1组为有序列,一组为无序列。每次排序 ,从无序列中取出一个数为T,对比有序列中的值(后往前对比),若无T小于有序列中的第一个值A,则吧A向后移动一个位置。继续对比。对比完成后,序列下标停留的位置值替换为T.
图解:
详细代码:
package rank;
public class InsertRank {// 插入排序
public static void main(String[] args) {
int[] array = { 4, 2, 5, 1, 7, 3, 8 };
array = insertTank(array);
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + "--");
}
}
public static int[] insertTank(int[] array) {
for (int i = 1; i < array.length; i++) {// 默认第一个值为有序,后面值为无序
int j = i - 1;// 有序列值 的最后一个数
int temp = array[i];// 待插入组的第一个数据
while (j >= 0 && temp < array[j]) {// 判断条件:待插入值小于有序列中的值 and 不能超出边界
array[j + 1] = array[j];// 后移动1位
j--;// 再和有序列中的值的前一位进行比较
}
array[j + 1] = temp;// +1的原因是 while执行-- 或没有执行while 本身值都大于有序值 不变
}
return array;
}
}