JAVA 插入排序

该博客介绍了JAVA插入排序的原理,包括其空间复杂度和时间复杂度,并指出在数据已有序时的最佳性能。还提到插入排序在处理少量数据或基本有序数据时的适用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

视频解析  https://edu.youkuaiyun.com/course/play/7813

插入排序:

1、空间复杂度O(1)。最好时间复杂度O(n),最坏时间复杂度O(n^2),平均时间复杂度为O(n^2)。最好情况下(已有序),比较次数n-1,移动次数0,最坏情况,比较次数O(n^2),移动次数O(n^2)。

### Java 实现插入排序算法 以下是基于提供的参考资料和专业知识编写的关于如何用 Java 实现插入排序算法的详细说明。 #### 插入排序的基本概念 插入排序是一种简单的排序算法,其核心思想是逐步构建一个有序序列。对于未排序的部分,每次取出一个元素并与已排序部分逐一比较,找到合适位置后将其插入[^1]。 #### 算法实现步骤 1. 假设第一个元素已经是一个有序子数组。 2. 遍历剩余的无序部分,依次选取当前元素作为 `key`。 3. 对于每一个 `key`,从右向左扫描已排序部分,将大于 `key` 的元素向右移动一位。 4. 将 `key` 放置到正确的位置上[^2]。 #### 时间复杂度与稳定性 插入排序的时间复杂度为 \( O(n^2) \),适用于小规模数据或接近有序的数据集。该算法具有稳定性,不会改变相同值元素之间的相对顺序[^3]。 #### Java 代码实现 以下是一段完整的 Java 代码示例,展示了如何实现插入排序: ```java public class InsertionSort { public static void main(String[] args) { int[] array = {5, 2, 9, 1, 5, 6}; insertionSort(array); System.out.println("Sorted Array:"); printArray(array); } // 插入排序的核心逻辑 public static void insertionSort(int[] array) { for (int i = 1; i < array.length; i++) { int key = array[i]; int j = i - 1; while (j >= 0 && array[j] > key) { array[j + 1] = array[j]; // 向右移动较大的元素 j--; } array[j + 1] = key; // 将key放置到正确位置[^4] } } // 打印数组的方法 public static void printArray(int[] array) { for (int value : array) { System.out.print(value + " "); } System.out.println(); } } ``` 上述代码实现插入排序的主要功能,并提供了一个测试案例来验证其实效性。 --- #### 排序过程解析 假设输入数组为 `{5, 2, 9, 1, 5, 6}`,执行插入排序的过程如下: 1. 初始状态:`{5 | 2, 9, 1, 5, 6}` 2. 第一次迭代:`{2, 5 | 9, 1, 5, 6}` 3. 第二次迭代:`{2, 5, 9 | 1, 5, 6}` 4. 第三次迭代:`{1, 2, 5, 9 | 5, 6}` 5. 第四次迭代:`{1, 2, 5, 5, 9 | 6}` 6. 最终结果:`{1, 2, 5, 5, 6, 9}` 每一步都确保了左侧部分始终处于有序状态。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

teayear

读后有收获可以获取更多资源

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值