本文主要是介绍折半插入元素,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
/** file name: BInsertSort.java* copyright: Unis Cloud Information Technology Co., Ltd. Copyright 2015, All rights reserved* description: <description>* mofidy staff: zheng* mofidy time: 2015年11月19日*/
package com.common.sort;import java.util.Arrays;/*** 折半插入排序 (前提为有序序列)* (向有序序列中插入元素,插入位置可以不断地平分有序序列,并把待插入元素与平分有序序列得到的元素进行比较,以确定下一步要平分的子序列,直到找到合适的插入位置)* * @author zheng* @version [version, 2015年11月19日]* @see [about class/method]* @since [product/module version]*/
public class BInsertSort {public static int[] bInsert(int[] arr,int data){//组合成一个新的数组,data为新数组的最后一个数int[] newArr = Arrays.copyOf(arr, arr.length+1);newArr[newArr.length-1] = data;int low = 0;int hight = newArr.length-2;while(low <= hight){int middle = (low+hight)/2;if(data > newArr[middle])low = middle + 1;else hight = middle - 1;}//把hight+1后的元素依次向后移一位for(int i=newArr.length-1;i>hight+1;i--){newArr[i] = newArr[i-1];}//给higth+1赋值newArr[hight+1] = data;return newArr;}public static void main(String[] args) {//有序序列int[] sortArr = {1,4,11,23,88,100,1001}; int[] newArr = BInsertSort.bInsert(sortArr, 44);for(int i:newArr)System.out.print(i+" ");}
}
这篇关于折半插入元素的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!