java插入排序
来源:互联网 发布:皓思网络 编辑:程序博客网 时间:2024/06/10 07:38
插入排序:插入排序指的是每次讲待排序的数据插入到已排序好序列的 正确位置。
比如站队时我们让学生的从低到高排列,后面来的学生需要将自己插入到队伍的正确位置中。
伪代码://升序排列InsertSort(array)for j = 2 to array.lengthvalue = array[j]i = j - 1while (i > 0 and a[i] > value)array[i + 1] = array[i]i = i - 1array[i + 1] = value
java代码:import java.util.Arrays;public class InsertSortTest {public static void main(String[] args) {int[] arr = {56, 22, 44, 10, 15, 12, 1, 123, 34, 123};System.out.println("before: " +Arrays.toString(arr));InsertSortTest inSort = new InsertSortTest();int[] result = inSort.insertSort(arr);System.out.println("after: " + Arrays.toString(result));}//升序排列public int[] insertSort(int[] arr) {for (int i = 1; i < arr.length; i++) {int temp = arr[i];int j = i - 1;while(j >= 0 && arr[j] > temp ) {arr[j + 1] = arr[j];j--;}arr[j + 1] = temp;}return arr;}}
时间复杂度:
1.最坏的情况
数组是倒序的,此时花的时间最长。插入第二个元素时需要与第一个比较,插入第三个元素时需要与第二个元素比较,。。。依次类推
数组的第n个需要比较(n - 1)次。对比较次数的等差数列求和结果为n(n-1)/2, 最坏的情况下时间复杂度为O(n^2)
2.最好的情况
数组是正序的,每次插入只需要比较前面一个元素,n个元素的数组共需要比较(n - 1)次,因此最好情况下时间负责度为O(n)
阅读全文
0 0
- Java排序--插入排序
- 排序-插入排序-Java
- 插入排序--直接插入排序[Java实现]
- 插入排序--折半插入排序[Java实现]
- java插入排序之直接插入排序
- 【插入排序】直接插入排序--Java
- 【插入排序】二分插入排序--Java
- 插入排序----直接插入排序----java实现
- [java]插入排序及折半插入排序
- java插入排序--直接插入排序
- Java插入排序
- java插入排序算法
- JAVA 插入排序
- JAVA插入排序分析
- java实现插入排序
- 插入排序java
- java 插入排序
- 插入排序(java)
- tab切换——点击
- MyBatis高级映射之一对多查询
- L2-009. 抢红包
- 关于百度地图(三)添加覆盖物自定义布局及遇到的一些bug解决方法
- Python 异常处理
- java插入排序
- Linux定时启动运行程序的方法
- 降级熔断框架 Hystrix 源码解析:滑动窗口统计
- [Noi2010] D1T1 能量采集 (欧拉函数)
- 第2周【项目3
- JVM内存模型及String对象内存分配
- 结构体对齐
- 初识软件测试
- 测试Linux内核驱动程序