1.特点介绍
下面给大家讲解一下经典排序算法之-插入排序算法,何为插入排序算法,其实其特点就是如下所讲:
对于一组数组:
1.先让1角标对比0角标值,小的放0大的放1
2.再让2角标对比1角标值,小的放1大的放2,1再比0,小前大后
3.再到3比2,小前大后,2比1,小前大后,以此类推
2.图解原理
3.代码详情
/**
* 插入排序
*
* 思路:第二个和第一个比;
* 1.开始1角标值和0角标值比
* 1.如果1位小于0位,互换,小的放前面;
* 2.再看2位如果小于1位,互换,如果再小于0位,也换;
* 3.再看3位如果小于2位,互换,如果再小于1位,也换,再小于0位,也换
*/
public class Demo05 {
public static void main(String[] args) {
int[] arr = {4, 2, -6, 9, 1};// 角标0-4,length=5;
printArray(arr, "初始");
insertSort(arr);
printArray(arr, "结果");
}
private static void insertSort(int[] arr) {
for (int i = 1; i < arr.length; i++) { //外层第二个开始
for (int j = i; j >0 ; j--) { //每次和前面的比,且后往前
if (arr[j] < arr[j-1]) { //逐个两个连续的比就是j和j-1;
int tem = arr[j-1];
arr[j-1] = arr[j];
arr[j] = tem;
}
}
}
}
private static void printArray(int[] arr, String str) {
for (int i = 0; i < arr.length; i++) {
if (i != arr.length - 1) {
if (i == 0) {
System.out.print("[" + arr[i] + ",");
} else {
System.out.print(arr[i] + ",");
}
} else {
System.out.println(arr[i] + "]" + "----" + str);
}
}
}
}
打印结果
[4,2,-6,9,1]----初始
[2,4,-6,9,1]--------第1轮
[-6,2,4,9,1]--------第2轮
[-6,2,4,9,1]--------第3轮
[-6,1,2,4,9]--------第4轮
[-6,1,2,4,9]----结果
4.总结
快速排序,记住的还是双重for循环.
1.外层控制从1角标开始.
2.内层是=外层,并逐个连续往前对比j=i,并且j--
3.这样就完全符合了插入排序的特点了
以上就是插入排序的详细过程,希望能帮组大家.