代码如下:

  1. public class BinaryInsertSort {
  2. public static void binaryInsertSort(DataWrap [] data)
  3. {
  4. System.out.println("开始排序:");
  5. int length = data.length;
  6. for(int i = 1;i < length;i++)
  7. {
  8. //当整体后移时,保证data[i]的值不会丢失
  9. DataWrap tmp = data[i];
  10. int low = 0;
  11. int high = i-1;
  12. while(low <= high)
  13. {
  14. //找出low,high中间的索引
  15. int mid = (low+high)/2;
  16. //如果tmp值大于low、high中间元素的值
  17. if(tmp.compareTo(data[mid]) >0)
  18. {
  19. //限制在索引大于mid的那一半中搜索
  20. low = mid +1;
  21. }
  22. else
  23. {
  24. //限制在索引小于mid的那一半中搜索
  25. high = mid -1;
  26. }
  27. }
  28. //将low到i处的所有元素向后整体移一步
  29. for(int j = i; j > low ;j-- )
  30. {
  31. data[j] =data[j-1];
  32. }
  33. //最后将tmp的值插入合适位置
  34. data[low] = tmp;
  35. System.out.println(java.util.Arrays.toString(data));
  36. }
  37. }
  38. public static void main(String[] args) {
  39. DataWrap[] data = {
  40. new DataWrap(21, ""),
  41. new DataWrap(30, ""),
  42. new DataWrap(49, ""),
  43. new DataWrap(30, ""),
  44. new DataWrap(16, ""),
  45. new DataWrap(9, ""),
  46. new DataWrap(-16, "")
  47. };
  48. System.out.println("排序之前:\n" + java.util.Arrays.toString(data));
  49. binaryInsertSort(data);
  50. System.out.println("排序之后:\n" + java.util.Arrays.toString(data));
  51. }
  52. }

  

java折半插入排序的更多相关文章

  1. 排序系列 之 折半插入排序算法 —— Java实现

    基本思想: 折半插入算法是对直接插入排序算法的改进,排序原理同直接插入算法: 把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序表中有n-1个元素:排序过程即每次从无序表中 ...

  2. Java常见排序算法之折半插入排序

    在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let ...

  3. java排序算法(七):折半插入排序

    java排序算法(七):折半插入排序 折半插入排序法又称为二分插入排序法,是直接插入排序法的改良版本,也需要执行i-1趟插入.不同之处在于第i趟插入.先找出第i+1个元素应该插入的位置.假设前i个数据 ...

  4. 【java集合框架源码剖析系列】java源码剖析之java集合中的折半插入排序算法

    注:关于排序算法,博主写过[数据结构排序算法系列]数据结构八大排序算法,基本上把所有的排序算法都详细的讲解过,而之所以单独将java集合中的排序算法拿出来讲解,是因为在阿里巴巴内推面试的时候面试官问过 ...

  5. 排序算法之折半插入排序的思想以及Java实现

    1 基本思想 折半插入排序(binary insertion sort)的基本原理与直接插入排序相同,不同之处在于,确定当前记录在前面有序子数组中的位置时,直接插入排序是采用顺序查找的方法,而折半插入 ...

  6. 折半插入排序 之通俗易懂,图文+代码详解-java编程

    转自http://blog.csdn.net/nzfxx/article/details/51615439 1.特点及概念介绍 下面给大家讲解一下"二分法查找"这个java基础查找 ...

  7. Java 实现二分(折半)插入排序

    设有一个序列a[0],a[1]...a[n];当中a[i-1]前是已经有序的,当插入时a[i]时,利用二分法搜索a[i]插入的位置 效率:O(N^2),对于初始基本有序的序列,效率上不如直接插入排序: ...

  8. hdu 2019:数列有序!(数据结构,直接插入排序+折半插入排序)

    数列有序! Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submiss ...

  9. IOS- 快速排序,冒泡排序,直接插入排序和折半插入排序,希尔排序,堆排序,直接选择排序

    /*******************************快速排序 start**********************************///随即取 当前取第一个,首先找到第一个的位置 ...

随机推荐

  1. Java遍历一个文件夹下的全部文件

    Java工具中为我们提供了一个用于管理文件系统的类,这个类就是File类,File类与其它流类不同的是,流类关心的是文件的内容.而File类关心的是磁盘上文件的存储. 一,File类有多个构造器,经常 ...

  2. js 四种调用方式 Method Invocation Pattern

    4.3. Invocation Invoking a function suspends the execution of the current function, passing control ...

  3. ios13--购物车优化

    // // ViewController.m // 03-综合练习 // #import "ViewController.h" @interface ViewController ...

  4. 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 ...

  5. JSP-Runoob:JSP 生命周期

    ylbtech-JSP-Runoob:JSP 生命周期 1.返回顶部 1. JSP 生命周期 理解JSP底层功能的关键就是去理解它们所遵守的生命周期. JSP生命周期就是从创建到销毁的整个过程,类似于 ...

  6. vs2010 下使用C#开发activeX控件

    1.创建一个类库 2.项目属性-应用程序-程序集信息-"使程序集COM可见"勾上; 3.项目属性-生成-"为COM互操作注册"勾上.(这个折腾一天,否则注册事件 ...

  7. 【转载】Sybase数据库服务器端安装

    sybase数据库的安装分为服务器端和客户端,本文先介绍一下服务器端的安装. 1.和其他程序一样,双击setup.exe.   2.出现欢迎界面,直接点击next即可.   3.下面选择相应国家的协议 ...

  8. js的时间展示

    <script type="text/javascript">$(function() { //方法调用    showtime();        //默认加载首页  ...

  9. css bug(ie6兼容问题)

    二.五大浏览器内核1.trident(MSHTML)(三叉戟:三叉线,三齿鱼叉) Gecko (壁虎) presto(迅速的) webkit(safari内核,Chrome内核原型,他是苹果公司自己的 ...

  10. github fork项目更改后与原作者同步更新

    1.进入你的GitHub发起Pull request 2.选择compare across forks 3.反向操作.base fork改为自己的,head fork改为原作者的 4.点击 creat ...