排序算法——插入排序
来源:互联网 发布:网络交换器 编辑:程序博客网 时间:2024/05/29 10:14
排序算法——插入排序
直接插入排序:某数组中共有N个无序整型或浮点数据(可比较元素),插入排序需要进行N-1次循环。从p=1到N-1次循环,每次循环都将数组中位置p上元素向左移动,直到前p+1个元素被正确排序(直到它找到它的正确位置)。这样循环结束后该数据组也排好序了。
实现:
public static <T extends Comparable<? super T>> T[] insertionSortUp(T[] t){ //从1开始进行length-1次循环 for (int i = 1; i < t.length; i++) { //位置i元素为插入元素,temp临时存放数据 T temp = t[i]; //与前i个数据进行比较排序,找到合适位置就插入 for (int j = i; j > 0 && temp.compareTo(t[j-1]) < 0; j--) { t[j] = t[j-1]; t[j-1] = temp; } } return t; }
测试:
public class Main { public static void main(String[] args) { Integer[] i={3,6,8,22,5,7,2}; i = InsertionSort.insertionSortUp(i); System.out.println(Arrays.toString(i)); }}
结果:
[2, 3, 5, 6, 7, 8, 22]
总结:
1. 平均时间复杂度:O(n²)
2. 空间复杂度:O(1)
3. 是稳定排序算法,更适合原始记录基本有序的,小规模(千以下)排序
4. 也适用于链式存储结构
阅读全文
0 0
- 排序—插入排序算法
- 排序算法—插入排序
- 数据结构&算法实践—【排序|插入排序】插入排序
- 排序算法—插入排序之直接插入排序
- 排序算法1—插入排序、选择排序、冒泡排序
- 排序算法——插入排序(直接插入排序、折半插入排序、希尔排序)
- 排序算法——插入排序
- 排序算法——二分插入排序
- 排序算法之一——插入排序
- 排序算法——插入排序
- 排序算法——插入排序
- 排序算法总结——插入排序
- 经典算法排序——插入排序
- 算法之排序——插入排序
- 排序算法——插入排序
- 排序算法3——插入排序
- 排序算法——插入排序
- 排序算法——插入排序
- 理解OAuth 2.0
- activemq
- 七月算法深度学习 第三期 学习笔记-第九节 强化学习与Deep Q-Network
- JVM 的类初始化机制
- 关于如何写一个数据协议(草稿)
- 排序算法——插入排序
- 【Go】Go语言中反射包的实现原理(The Laws of Reflection)
- python opencv入门 Canny边缘检测(15)
- 编程实战之:NTC采样程序设计
- 根据MAC地址生成软件的序列号
- 帧布局
- 自定义栈和队列
- vue表单验证组件 v-verify-plugin
- 二分图匹配之最佳匹配 km算法详解