Java插入排序
Java插入排序
/**
* 插入排序
*
* @author yl
*/
public class InsertSort {
public static void main(String[] args) {
int[] ints = {7, 5, 3, 8};
System.out.println(Arrays.toString(insertSort(ints)));
}
/**
* 插入排序算法
* 类似整理扑克牌,比如有左手有一副牌1,2,4,7 ,来一张3的牌, 是不是就是手拿着这张牌从右往左插到2,4之间
* 一次插入排序的操作过程:
* 将待插元素,依次与已排序好的子数列元素从后到前进行比较,如果当前元素值比待插元素值大,则将移位到与其相邻的后一个位置
* 否则直接将待插元素插入当前元素相邻的后一位置,因为说明已经找到插入点的最终位置
*
* @param ints
* @return
*/
public static int[] insertSort(int[] ints) {
if (ints.length >= 2) {
// 默认ints[0]已经排好序
for (int i = 1; i < ints.length; i++) {
// 要排序的数
int target = ints[i];
// 排序目标前一个数的下标
int j = i - 1;
// 当排序目标比前一个数小,执行排序操作
while (j >= 0 && ints[j] > target) {
// 将排序目标的前一个数往右移动一位
ints[j + 1] = ints[j];
// 继续跟前面的数比较
j--;
}
// 将排序目标插入到目标位置,由于while循环里面j--了,所以目标位置要加1
ints[j + 1] = target;
}
}
return ints;
}
}
记得快乐
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!