插入排序算法
就算法而言,我们主要学习的是数学+思维+逻辑+数据结构实现功能,所以我们主要学习是思维也是解决问题的思路,然后用逻辑去实现它
文章目录
前言
提示:这可是面试当中笔试或机试最常见的算法,敲黑板划重点!!!!
一、什么是插入排序算法?
先问你个事,玩过扑克牌吗?斗地主、扎金花、填大坑,建议大家不要赌博!
言归正传:就如生活中的起扑克牌一样,每起一张都会插入手中,但是插入后,手中的牌一直是有序的。
思路:从第二个位置上开始,每次选择一个位置上元素,和前面的数逐一比较,如果小于前面的数,则前面数后移,直到大于前面的数,则停止移动,插入位置。这样每趟走完之后,前面的已经插入的序列一定是有序
二、代码实现
package com.zrrd.lianxi;
import java.util.Arrays;
public class 插入排序 {
public static void main(String[] args) {
int[] arr = {
9,8,7,1,6,5,4,10,3,2};
chaRuPaiXue(arr);
}
public static void chaRuPaiXue(int [] shuzu) {
//遍历数组
for (int i = 1; i < shuzu.length; i++) {
//将第二个位置的值赋值 num 变量
int num = shuzu[i];
//将数组第二个位置下角标赋值给 j 变量 只要不是第一位肯定会大于0
for (int j = i; j > 0; j--) {
//判断shuzu[j-1]代表数组第一位值 是否大于 第二位值 举例: 9 > 8
if(shuzu[j-1]>num) {
//如果第一位大于第二位,就将第一位的值赋值到第二位
shuzu[j] = shuzu[j-1];
//将第二位,赋值到第一位 举例 8 9 ,然后执行下一次循环
shuzu[j-1] = num;
}else {
//将第二位赋值给自己,相当于没变但是要赋值,因为下次循环比较用的是shuzu[j]的值
shuzu[j] = num;
break;
}
}
}
System.out.println("插入排序算法执行后:"+ Arrays.toString(shuzu));
}
}
执行结果图
参考图
总结
冒泡排序,选择排序、插入排序、快速排序这四种算法我已经全部写完啦,若果不知道可以看看我之前的文章,比较一下这几种算法有什么不一样,你可以从执行效率上出发,也可以从时间复杂度、空间复杂度比较,每一种算法其实都有自己的特点,加油!。