Java插入排序算法详解:原理、实现与优化技巧
一、算法原理与核心思想
插入排序是简单的排序法,像整理牌一样。把没排好的牌一张张放到排好的地方,最后牌就全排好了。
基本步骤:
把数组分两块:一块排好序了(最开始是一个元素),另一块还没排。
从未排序里拿第一个,和已排序的后面往前比。
当前元素比插入值大时,就往后挪一位,直到找对地方插进去。
一直重复,直到没东西排了。
类比一下:整理牌时,摸到新牌就放到已有牌的正确地方57。
二、Java实现代码与解析
以下是插入排序的Java代码,给大家看看:
public class InsertionSort {
public static void sort(int[] arr) {
int n = arr.length;
for (int i = 1; i < n; i++) { // 从第二个元素开始遍历 int key = arr[i]; // 待插入的元素 int j = i - 1;
// 将比key大的元素后移 while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key; // 插入到正确位置 }
}
public static void main(String[] args) {
int[] arr = {5, 2, 9, 1, 5, 6};
sort(arr);
System.out.println(" 排序结果:" + Arrays.toString(arr));
}
}
代码解析:
外层循环:
从1开始,这就是未排序区的头。
内层循环:
从
起初,往前找排序好的地方,找到能插的位置。
时间复杂度:
最佳状态(已排好序):
最坏情况(逆序):
平均情况:
118。
三、优化技巧与适用场景
1. 优化策略
减少交换:用临时存值,不常换来换去。
如果排序区元素小或等于待插值,跳出内层循环11。
2. 适用场景
小数据:数据少(如<1000),插入排序比快速排序更好11。
部分排序数据:数组若快有序了,插入排序性能会变好7。
四、与同类算法的对比
五、总结
Java的插入排序,因为简单和稳定,所以在处理小数据或部分有序时表现很好。优化代码后,能更快点。了解插入排序,对懂更难的排序算法(像希尔排序)有帮助12。
关键词布局:
标题:
正文:
、
、
、
本文融合技术与SEO,用结构化内容、关键词和代码,让百度等搜索器排名好129。