插入排序算法Java实现
2017-11-30 18:21 lc_java 阅读(262) 评论(0) 编辑 收藏 举报一. 算法描述
插入即表示将一个新的数据插入到一个有序数组中,并继续保持有序。例如有一个长度为N的无序数组,进行N-1次的插入即能完成排序;第一次,数组第1个数认为是有序的数组,将数组第二个元素插入仅有1个有序的数组中;第二次,数组前两个元素组成有序的数组,将数组第三个元素插入由两个元素构成的有序数组中......第N-1次,数组前N-1个元素组成有序的数组,将数组的第N个元素插入由N-1个元素构成的有序数组中,则完成了整个插入排序。
图1演示了对4个元素进行直接插入排序的过程,共需要(a),(b),(c)三次插入。
二. 算法分析
平均时间复杂度:O(n2)
空间复杂度:O(1) (用于记录需要插入的数据)
稳定性:稳定
三. 算法实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | package com.neuedu.algorithm; import java.util.Arrays; public class InsertSort { //插入排序 public static void insertSort( int [] a) { int i, j, insertNote; // 要插入的数据 for (i = 1; i < a.length; i++) { // 从数组的第二个元素开始循环将数组中的元素插入 insertNote = a[i]; // 设置数组中的第2个元素为第一次循环要插入的数据 j = i - 1; while (j >= 0 && insertNote < a[j]) { a[j + 1] = a[j]; // 如果要插入的元素小于第j个元素,就将第j个元素向后移动 j--; } a[j + 1] = insertNote; // 直到要插入的元素不小于第j个元素,将insertNote插入到数组中 } } public static void main(String[] args) { int a[] = { 38,65,97,76,13,27,49 }; insertSort(a); System. out .println(Arrays.toString(a)); } } |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 35岁程序员的中年求职记:四次碰壁后的深度反思
· 继承的思维:从思维模式到架构设计的深度解析
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 35岁程序员的中年求职记:四次碰壁后的深度反思
· 当职场成战场:降职、阴谋与一场硬碰硬的抗争
· ShadowSql之.net sql拼写神器
· Excel百万数据如何快速导入?
· 无需WebView,Vue也能开发跨平台桌面应用