直接插入排序的Java实现、性能分析以及适用场景
来源:互联网 发布:室内设计上海知乎 编辑:程序博客网 时间:2024/06/06 22:09
1.直接插入排序的Java实现:
代码如下:
package com.zm.testSort;/** * 直接插入排序类 * @author zm */public class InsertSort { public static void getInsertSort(int[] a) { if(a == null || a.length == 0) {//判断数组是否为空 System.out.println("该数组为空!"); return; } int n = a.length;//将数组的长度赋给n是为了防止每次for循环中判断时都调用length方法影响性能 int temp;//放于for循环外面是为了防止重复创建变量 int j; for(int i = 1; i < n;i++){//排序的趟数 temp = a[i];//赋给temp是为了防止索引i之前的元素向后移动覆盖了索引i的元素 j = i-1; for(; j>=0&&a[j]>temp; --j) {//将大于i位置元素的元素向后移 a[j+1] = a[j]; } a[j+1]= temp;//找到i应该在的位置,将值放置此处 } } public static void main(String[] args) { int[] a = {3, 5, 1, 2, 6, 4, 7, 11, 23, 44, 3, 34}; getInsertSort(a); System.out.print("直接插入排序:"); for(int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } }}
2.直接插入排序的性能分析:
时间复杂度:
1. 最好情况:O(n)
2. 平均情况:O(n^2)
3. 最坏情况:O(n^2)
空间复杂度:O(1)
稳定性:稳定(相同元素的相对位置不会改变)
3.适用场景
3.1:当n <= 50时,适合适用直接插入排序和简单选择排序,如果元素包含的内容过大,就不适合直接插入排序,因为直接插入排序需要移动元素的次数比较多.
3.2:当数组基本有序的情况下适合使用直接插入排序和冒泡排序,它们在基本有序的情况下排序的时间复杂度接近O(n).
阅读全文
0 0
- 直接插入排序的Java实现、性能分析以及适用场景
- 冒泡排序的Java实现、性能分析以及适用场景
- 希尔排序的Java实现、性能分析以及适用场景
- 快速排序的Java实现、性能分析以及适用场景
- 堆排序的Java实现、性能分析以及适用场景
- 归并排序的Java实现、性能分析以及适用场景
- 简单选择排序的Java实现、性能分析以及适用场景
- 对字符串进行直接插入排序、堆排序、归并排序、快速排序实现以及性能分析
- 直接插入排序以及java实现
- 直接插入排序的 Java实现
- 直接插入排序的java实现
- 排序算法之直接插入排序的思想以及Java实现
- 冒泡排序、选择排序、插入排序、快速排序算法的时间性能分析(java实现)
- 插入排序--直接插入排序[Java实现]
- 插入排序----直接插入排序----java实现
- 经典(java版)排序算法的分析及实现之一直接插入排序
- 直接插入排序java实现
- Java实现直接插入排序
- c++ primer plus阅读笔记8---decltype
- linux使用cifs方式mount(挂载)Windows7共享文件
- 17暑假多校联赛7.11 HDU 6130 Kolakoski
- Chrome出现黑屏现象
- yarn-1
- 直接插入排序的Java实现、性能分析以及适用场景
- linux下安装mysql简单的方法
- 判断angular渲染页面完成
- OpenLayers简介
- 数字-字符串转换
- 2017.08.15【NOIP 普及组】模拟赛C组总结
- Multipart上传filename乱码
- 【bzoj1041】[HAOI2008]圆上的整点
- netty