折半插入元素


/*
* 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+" ");
}
}


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



折半查找確定插入數組中元素的位置 折半插入排序 折半插入排序 折半插入排序 折半插入排序 折半插入排序 折半插入排序 折半插入排序 插入類排序——折半插入 排序--折半插入排序
 
粤ICP备14056181号  © 2014-2020 ITdaan.com