A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 叶子和大人 中级黑马   /  2015-10-25 12:37  /  807 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 叶子和大人 于 2015-10-25 14:24 编辑

把折半查找和直接插入排序结合在一起,能减少比较的次数。
  1. private static int[] binaryInsertSort(int[] arr) {
  2.                 for (int i = 1; i < arr.length; i++) {
  3.                         int temp = arr[i];
  4.                         int low = 0;
  5.                         int high = i - 1;
  6.                         while (low <= high) {
  7.                                 int mid = (low + high) / 2;
  8.                                 if (temp < arr[mid]) {
  9.                                         high = mid - 1;
  10.                                 } else {
  11.                                         low = mid + 1;
  12.                                 }
  13.                         }
  14.                         for (int j = i; j >= low + 1; j--) {
  15.                                 arr[j] = arr[j - 1];
  16.                         }
  17.                         arr[low] = temp;
  18.                 }
  19.                 return arr;
  20.         }
复制代码


5 个回复

倒序浏览
实际开发当中好像用不到吧,这只是一个基础,实际当中JAVA已经提供很多算法了
回复 使用道具 举报
怎么只有两行
回复 使用道具 举报
wome789 发表于 2015-10-25 13:18
实际开发当中好像用不到吧,这只是一个基础,实际当中JAVA已经提供很多算法了 ...

是的,但是我觉得不能就光知道怎么用就好,像这些基础稍微懂一些,对你设计代码有起到很好的理解作用,会明白别人的代码为什么这么设计。
回复 使用道具 举报
大神啊,膜拜一下
回复 使用道具 举报
叶子和大人 发表于 2015-10-25 14:26
是的,但是我觉得不能就光知道怎么用就好,像这些基础稍微懂一些,对你设计代码有起到很好的理解作用,会 ...

恩,是的,突然觉得javase才是核心,其它的只是框架,你会用就好了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马