插入排序(动图理解)
算法思路
- 从第一个元素开始,该元素可以认为已经被排序;
- 取出下一个元素,在已经排序的元素序列中从后向前扫描;
- 如果该元素(已排序)大于新元素,将该元素移到下一位置;
- 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
- 将新元素插入到该位置后;
- 重复步骤2~5。
动图:
代码实现
- 简洁版代码
public static void insertSort(int[] array){
int temp=0,j=0;
for(int i=1,len=array.length;i<len;i++){
temp=array[i];
j=i;
while (j>0 && array[j-1]>temp){
array[j]=array[j-1];
j--;
}
array[j]=temp;
}
}
- 完整版代码
package sort;
/**
* 插入排序
* 从第二个开始,一旦比前面的小就往前面插到自己合适的位置去,就跟打扑克牌抓了牌去插牌差不多
* 2 3 1 5
* 由于3比1大,让3往后移动,再跟2对比,2币1 大那么2也往后移动,直到停下来,把1放到属于自己的位置
* 2 - 3 5
* - 2 3 5
* 1 2 3 5
* @author humorchen
*/
public class InsertSort {
public static void insertSort(int[] array){
int temp=0,j=0;
for(int i=1,len=array.length;i<len;i++){
temp=array[i];
j=i;
while (j>0 && array[j-1]>temp){
array[j]=array[j-1];
j--;
}
array[j]=temp;
}
}
public static void print(int[] array){
System.out.println("打印现在的数据");
for(int t:array){
System.out.print(t+" ");
}
System.out.println();
}
public static void main(String[] args) {
int[] array={4,3,2,5,6,1,3,7};
insertSort(array);
print(array);
}
}
明人不说暗话,动图是从https://www.cnblogs.com/onepixel/articles/7674659.html拿滴
本文来自博客园,作者:HumorChen99,转载请注明原文链接:https://www.cnblogs.com/HumorChen/p/18039662
分类:
Java
, leetcode算法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~