排序算法之折半插入排序的思想以及Java实现
来源:互联网 发布:郑州软件培训机构 编辑:程序博客网 时间:2024/06/05 05:48
1 基本思想
折半插入排序(binary insertion sort)的基本原理与直接插入排序相同,不同之处在于,确定当前记录在前面有序子数组中的位置时,直接插入排序是采用顺序查找的方法,而折半插入排序是采用折半查找的方法,因此它仅适用于顺序存储的线性表。
2,算法的实现(Java)
package Algorithm;public class binary_insert_sort { /** * @param args */ public static void main(String[] args) { int array[] = {23,12,34,56,78,67,99,100}; System.out.println("---------排序前的结果----------"); binary_insert_sort.output(array); System.out.println("---------排序后的结果----------"); binary_insert_sort.binary_insert_sort(array); binary_insert_sort.output(array); } //折半插入排序算法 public static void binary_insert_sort(int[] arr){ int low,high,mid,temp,j; for(int i=1;i<arr.length;i++){ temp = arr[i]; low = 0; high = i-1; while(low <=high){ mid =(high+low)/2; if(arr[mid] > temp){ high = mid -1; } else { low = mid+1; } } for(j = i-1;j >=high+1; j--) arr[j+1] = arr[j]; arr[j+1] = temp; } } //输出打印 public static void output(int[] arr){ for(int i=0;i<arr.length;i++){ System.out.print(arr[i]+","); } System.out.println(); }}
得到的结果如下所示:
3,性能分析
折半查找只是减少了比较次数,但是元素的移动次数不变。因此,它的
空间复杂度 O(1) ,时间复杂度O(n^2),是一种稳定的排序算法
0 0
- 排序算法之折半插入排序的思想以及Java实现
- 数据算法之折半插入排序(binInsertSort)的Java实现
- java实现排序算法之插入排序(直接插入排序,折半插入排序,希尔排序)
- 排序算法之直接插入排序的思想以及Java实现
- java实现排序算法之2-路插入排序,直接插入排序,折半插入排序
- 排序算法之希尔排序的思想以及Java实现
- 排序算法之冒泡排序的思想以及Java实现
- 排序算法之快速排序的思想以及Java实现
- 排序算法之选择排序的思想以及Java实现
- 插入排序之折半排序Java实现
- 排序算法--插入排序(直接插入排序、折半插入、shell排序)的java实现
- java实现折半插入排序算法
- java实现折半插入排序算法
- java基本算法之折半插入排序
- java折半插入排序算法
- 插入排序--折半插入排序[Java实现]
- 折半插入排序java实现
- Java实现折半插入排序
- HDU 1864 CD报销发票+浮点数的01背包
- c语言课程设计:银行帐户管理系统
- 博弈论专题——推理与动态规划相关博弈之POJ2484 POJ1740(模仿游戏)
- mysql常用命令
- 7.OAut认证 根据授权码获取用户的ID,SECRET等信息
- 排序算法之折半插入排序的思想以及Java实现
- 第五章JSP(2)
- Floyd最短路径算法
- Linux运维必学必会(四)- more、less、tail、head命令的区别
- 起泡、二路归并排序
- iOS仿微信弹出框LPActionSheet
- 初学C语言:
- CodeForces 367E Working routine 十字链表
- java中集合框架的基本概念整理