插入排序的算法描述和分析
插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。
它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,
通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,
需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
时间复杂度:最佳为o(n):因为如果是已经排序好的序列话,它每次只需和前面已排序好的序列比较一次,总共比较n次,也是可以通过flag实现的,然后最差时间复杂度(平均为)为o(n^2)
package sort; /** * @author wyc * 插入排序 */ public class InsertionSort { public static void main(String[] args) { /*int[] arrays = {1,11,12,4,2,6,9,0,3,7,8,2};*/ int[] arrays = {12,11,10,9,8}; int[] sortArray = new int[arrays.length]; insertionSorting(arrays, sortArray); for(int value : sortArray){ System.out.print(value+","); } System.out.print(" "+sortArray.length); } private static void insertionSorting(int[] array,int[] sortArray){ sortArray[0] = array[0]; for(int j = 1;j < array.length;j++){ for(int i = j-1,flag = 1; i >= 0;i--){ if(array[j] > sortArray[i]){ swap(sortArray,i,i+1); if(flag == 1){ sortArray[i] = array[j]; flag = 0; } }else{ if(flag == 1){ sortArray[i+1] = array[j]; break; } } } } } private static void swap(int[] arrays,int index,int index1){ arrays[index] = arrays[index] + arrays[index1]; arrays[index1] = arrays[index] - arrays[index1]; arrays[index] = arrays[index] - arrays[index1]; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?