InsertSort
package Sort; /** * 最坏情况:当待排序序列为逆序状态,首先遍历整个序列,之后一个一个地将待插入元素放在已排好序的序列最前面,之后的所有元素都需要向后移动一位,时间复杂度为O(n^2) * 最好情况:当待排序序列为正序状态,则遍历完整个序列,当插入元素时,只比较一次就够了,所以时间复杂度为O(n) * 稳定性: 当待插入元素与有序序列中比较的元素相等时,将待插入元素直接插入在该相等元素的后面。所以,两个元素位置的前后顺序没有改变,故插入排序是稳定的 */ /** * 1.将第一个待排序的序列的第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。 * 2.从头到尾一次扫描未排序的序列,将扫描到的每个元素插入有序序列的适当位置 * (在这里需要注意一个问题,如果在有序序列中有一个和待插入的元素相等,则将待插入的元素查到此元素的后面,这样方式的插入排序是稳定的。 * 如果插入到此元素的前面,那么此种方式的插入排序是不稳定的) * */ public class InsertSort { public static void main(String[] args) { int[] arr = new int[]{18, 4, 69, 3, 10, 20, 87, 33}; insertSort(arr); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } } public static void insertSort(int[] arr) { if (arr.length == 1 || arr == null) { return; } for (int i = 1; i < arr.length; i++) { for (int j= i; j > 0; j--) { if (arr[j] < arr[j - 1]) {//符合条件,插入元素(交换位置) int temp = arr[j]; arr[j] = arr[j - 1]; arr[j - 1] = temp; } } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能