【排序算法】直接插入排序(java实现)
来源:互联网 发布:软件项目经理面试题 编辑:程序博客网 时间:2024/04/20 17:59
1.基本思想:
在排序算法中算是一种非常简单直观的排序算法。将第一个元素作为已排好的序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
2.算法分析:
时间复杂度:O(N^2)
空间复杂度:O(1)
稳定性: 稳定
3.算法实现:
//直接插入public static void InsertSort(int[] array){for (int i = 1 ;i < array.length ; i++){int t = array[i];int j =i-1;while(j >= 0 && array[j] > t){array[j+1] = array[j];j--;}array[j+1] = t; //将待排元素插入正确位置}}
4.算法优化:
对于之间插入排序,在每趟插入过程中,都进行了两项工作:
(1)从前面的子序列中查找出带插入元素应该被插入的位置
(2)给插入位置腾出空间,将带插入元素复制到表中插入位置。
该算法总是变比较边移动。因为被比较的子序列是有序是,可以考虑二分查找的方法进行,虽然这样的比较次数变少约O(nlog2n),但移动次数不变,仍为O(N^2).
//折半插入public static void InsertSort(int[] array){int j;for (int i = 1 ;i < array.length ; i++){int low = 0, high = i-1;int insert = array[i];//二分查找待排元素应该插入的位置while(low <= high){int mid = (low + high)/2;if (insert > array[mid]){low = mid +1;}else{high = mid -1;}}for (j = i; j > low ; j--){array[j] = array[j-1];}array[j] = insert;}}
0 0
- 【排序算法】直接插入排序(java实现)
- 排序算法--Java实现直接插入排序
- 插入排序之直接插入排序算法-java实现
- java实现排序算法之插入排序(直接插入排序,折半插入排序,希尔排序)
- Java实现直接插入排序算法
- Java算法实现-直接插入排序
- 排序算法--插入排序(直接插入排序、折半插入、shell排序)的java实现
- java实现排序算法之2-路插入排序,直接插入排序,折半插入排序
- 实现直接插入排序算法
- 直接插入排序算法实现
- 直接插入排序算法实现
- 插入排序--直接插入排序[Java实现]
- 插入排序----直接插入排序----java实现
- 用JAVA实现排序算法之二:直接插入排序
- 排序算法之直接插入排序----java实现
- java实现排序算法之直接插入排序
- java实现 排序算法之直接插入排序
- [排序算法]--直接插入排序的三种实现(Java)
- c++ boost--------------boost::progress_timer小试。
- 【c实现,vc6调试通过】给出一字符串指针,计算出字符串指针中单词数
- swift - 为类和结构体增加下标(subscript)操作
- [python 2.7.5] 实现配置文件的读写
- 安装node.js+express for win7的Web开发环境配置
- 【排序算法】直接插入排序(java实现)
- C# 多线程---------<一>
- 随机森林最简实现
- spark streaming 输出数据到kafka
- C# 委托:把方法组合到一个数组中使用
- 优化unity发布 iOS应用大小 Optimizing the Size of the Built iOS Player<转>
- C# 多线程传参
- C# 线程同步
- c# winform 关于DataGridView的一些操作(很全,绝对够用)