java折半插入排序
代码如下:
- public class BinaryInsertSort {
- public static void binaryInsertSort(DataWrap [] data)
- {
- System.out.println("开始排序:");
- int length = data.length;
- for(int i = 1;i < length;i++)
- {
- //当整体后移时,保证data[i]的值不会丢失
- DataWrap tmp = data[i];
- int low = 0;
- int high = i-1;
- while(low <= high)
- {
- //找出low,high中间的索引
- int mid = (low+high)/2;
- //如果tmp值大于low、high中间元素的值
- if(tmp.compareTo(data[mid]) >0)
- {
- //限制在索引大于mid的那一半中搜索
- low = mid +1;
- }
- else
- {
- //限制在索引小于mid的那一半中搜索
- high = mid -1;
- }
- }
- //将low到i处的所有元素向后整体移一步
- for(int j = i; j > low ;j-- )
- {
- data[j] =data[j-1];
- }
- //最后将tmp的值插入合适位置
- data[low] = tmp;
- System.out.println(java.util.Arrays.toString(data));
- }
- }
- public static void main(String[] args) {
- DataWrap[] data = {
- new DataWrap(21, ""),
- new DataWrap(30, ""),
- new DataWrap(49, ""),
- new DataWrap(30, ""),
- new DataWrap(16, ""),
- new DataWrap(9, ""),
- new DataWrap(-16, "")
- };
- System.out.println("排序之前:\n" + java.util.Arrays.toString(data));
- binaryInsertSort(data);
- System.out.println("排序之后:\n" + java.util.Arrays.toString(data));
- }
- }
java折半插入排序的更多相关文章
- 排序系列 之 折半插入排序算法 —— Java实现
基本思想: 折半插入算法是对直接插入排序算法的改进,排序原理同直接插入算法: 把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序表中有n-1个元素:排序过程即每次从无序表中 ...
- Java常见排序算法之折半插入排序
在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let ...
- java排序算法(七):折半插入排序
java排序算法(七):折半插入排序 折半插入排序法又称为二分插入排序法,是直接插入排序法的改良版本,也需要执行i-1趟插入.不同之处在于第i趟插入.先找出第i+1个元素应该插入的位置.假设前i个数据 ...
- 【java集合框架源码剖析系列】java源码剖析之java集合中的折半插入排序算法
注:关于排序算法,博主写过[数据结构排序算法系列]数据结构八大排序算法,基本上把所有的排序算法都详细的讲解过,而之所以单独将java集合中的排序算法拿出来讲解,是因为在阿里巴巴内推面试的时候面试官问过 ...
- 排序算法之折半插入排序的思想以及Java实现
1 基本思想 折半插入排序(binary insertion sort)的基本原理与直接插入排序相同,不同之处在于,确定当前记录在前面有序子数组中的位置时,直接插入排序是采用顺序查找的方法,而折半插入 ...
- 折半插入排序 之通俗易懂,图文+代码详解-java编程
转自http://blog.csdn.net/nzfxx/article/details/51615439 1.特点及概念介绍 下面给大家讲解一下"二分法查找"这个java基础查找 ...
- Java 实现二分(折半)插入排序
设有一个序列a[0],a[1]...a[n];当中a[i-1]前是已经有序的,当插入时a[i]时,利用二分法搜索a[i]插入的位置 效率:O(N^2),对于初始基本有序的序列,效率上不如直接插入排序: ...
- hdu 2019:数列有序!(数据结构,直接插入排序+折半插入排序)
数列有序! Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submiss ...
- IOS- 快速排序,冒泡排序,直接插入排序和折半插入排序,希尔排序,堆排序,直接选择排序
/*******************************快速排序 start**********************************///随即取 当前取第一个,首先找到第一个的位置 ...
随机推荐
- Java遍历一个文件夹下的全部文件
Java工具中为我们提供了一个用于管理文件系统的类,这个类就是File类,File类与其它流类不同的是,流类关心的是文件的内容.而File类关心的是磁盘上文件的存储. 一,File类有多个构造器,经常 ...
- js 四种调用方式 Method Invocation Pattern
4.3. Invocation Invoking a function suspends the execution of the current function, passing control ...
- ios13--购物车优化
// // ViewController.m // 03-综合练习 // #import "ViewController.h" @interface ViewController ...
- Uva 11151 - Longest Palindrome
A palindrome is a string that reads the same from the left as it does from the right. For example, I ...
- JSP-Runoob:JSP 生命周期
ylbtech-JSP-Runoob:JSP 生命周期 1.返回顶部 1. JSP 生命周期 理解JSP底层功能的关键就是去理解它们所遵守的生命周期. JSP生命周期就是从创建到销毁的整个过程,类似于 ...
- vs2010 下使用C#开发activeX控件
1.创建一个类库 2.项目属性-应用程序-程序集信息-"使程序集COM可见"勾上; 3.项目属性-生成-"为COM互操作注册"勾上.(这个折腾一天,否则注册事件 ...
- 【转载】Sybase数据库服务器端安装
sybase数据库的安装分为服务器端和客户端,本文先介绍一下服务器端的安装. 1.和其他程序一样,双击setup.exe. 2.出现欢迎界面,直接点击next即可. 3.下面选择相应国家的协议 ...
- js的时间展示
<script type="text/javascript">$(function() { //方法调用 showtime(); //默认加载首页 ...
- css bug(ie6兼容问题)
二.五大浏览器内核1.trident(MSHTML)(三叉戟:三叉线,三齿鱼叉) Gecko (壁虎) presto(迅速的) webkit(safari内核,Chrome内核原型,他是苹果公司自己的 ...
- github fork项目更改后与原作者同步更新
1.进入你的GitHub发起Pull request 2.选择compare across forks 3.反向操作.base fork改为自己的,head fork改为原作者的 4.点击 creat ...