排序算法(五)二分排序
2015-08-24 16:01
232 查看
二分排序是指折半插入排序。当直接插入排序进行到某一趟时,对于r[i].key来讲,前边i-1个记录已经按关键字有序。此时不用直接插入排序的方法,而改为二分折半查找,找出r[i].key应插入的位置,然后插入。
Java实现二分排序算法:
算法分析:
二分排序中,关键字的比较次数由于采用了折半查找而减少,数量级为O(n log n),但是元素移动次数仍为O(n^2)。故折半插入排序时间复杂度仍未O(n^2)。二分排序方法是稳定的。
Java实现二分排序算法:
package com.review.sort; public class BinarySort { public static void main(String[] args) { int[] a = { 4, 2, 1, 6, 3, 6, 0, -5, 1, 1 }; int i, j; int low, high, mid; int temp; for (i = 1; i < a.length; i++) { temp = a[i]; low = 0; high = i - 1; while (low <= high) { mid = (low + high) / 2; if (a[mid] > temp) high = mid - 1; else low = mid + 1; } for (j = i - 1; j > high; j--) a[j + 1] = a[j]; a[high + 1] = temp; } for (i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } } }
算法分析:
二分排序中,关键字的比较次数由于采用了折半查找而减少,数量级为O(n log n),但是元素移动次数仍为O(n^2)。故折半插入排序时间复杂度仍未O(n^2)。二分排序方法是稳定的。
相关文章推荐
- Fragment实现底部菜单栏
- POJ 3041 Asteroids 匈牙利算法,最大流解法,行列为点 难度:1
- PHP获取网址的PR值
- activeMQ主要的几类集群部署方式
- JAVA线程池的分析和使用
- leetcode 179: Largest Number
- 验证码实现(随机背景色及字体颜色,带扰乱线条)
- java,如何给一个任务设置超时限制
- map
- 查找和排序
- Nginx 配置 gzip 压缩
- 畅通工程
- UE4 WorldPositionOffset
- HDU5344 MZL's xor
- ios 开发 收起键盘的小技巧
- 什么是JavaScript闭包终极全解之一——基础概念
- 每个开发人员都需要了解的一个SQL技巧
- 墨綠的黃昏
- 类/属性/对象/方法的区别
- 转载设计模式介绍