【插入排序】二分插入排序--Java
来源:互联网 发布:淘宝客赚钱是真的吗 编辑:程序博客网 时间:2024/05/21 21:45
二分插入排序又叫折半插入排序,其思想是:
1、将第一个元素看做已排好序的有序区,后面的元素看做未排序的无序区
2、将无序区的第一个元素X利用二分查找法找到X在有序区的插入位置并插入,则有序区还是有序的
3、重复步骤2,将无序区所有的元素依次插入到有序区,则排序完成
这种排序的核心的就是利用二分查找法找到有序区的合适位置并插入,例如:
34679 8152(这是已经排好部分序列的数组a[],以此为例讲解插入过程)
因为8>6,所以8应该放在6与9之间,又8>7,故8应该放在7与9之间,又7与9之间没有元素,所以8的插入位置确定,其插入结果为
346789 152
代码如下(运行成功):
public class InsertSort {public static void main(String[] args){int[] array={3,6,4,7,9,8,1,5,2};for(int i=1;i<array.length;i++){int tmp=array[i];int low=0;int high=i-1;while(low<=high){int mid=(low+high)/2;if(array[mid]>tmp){high=mid-1;}else{low=mid+1;}}for(int j=i-1;j>=high+1;j--){array[j+1]=array[j];}array[high+1]=tmp;}for(int i=0;i<array.length;i++){System.out.print(array[i]+"\t");}}}
二分插入排序的空间复杂度为O(1),时间复杂度仍为O(n^2).
0 0
- Java二分插入排序
- 【插入排序】二分插入排序--Java
- 插入排序 二分插入排序
- 插入排序-二分插入排序
- Java实现二分插入排序
- java实现二分插入排序
- Java排序之插入排序[二分、折半插入排序](4)
- Java排序四:二分插入排序
- 二分插入排序 插入排序 希尔排序
- java实现折半插入排序(二分插入排序)
- 插入类------二分插入排序
- 二分插入排序
- 二分插入排序。
- 二分插入排序
- 二分查找插入排序
- C++ 二分插入排序
- 二分查找插入排序
- 二分插入排序
- VC++中出现错误“ error c2065 'printf' undeclared identifier”的处理方法
- 计算机
- 嘻嘻,刚开通了博客! 大家要常来看看哦
- 图像识别技术——验证码识别
- Crontab on Solaris
- 【插入排序】二分插入排序--Java
- functools.wraps
- 浙大 pat Basic Level 1016
- 计算工具的演化经历
- QT无法解析的外部符号解决办法
- sqlserver的bcp命令特殊符号转义
- C# 实现自定义类型的A[key]取值
- 电子管数字计算机
- 21275:切蛋糕