算法思想: 1. 从前面的有序子序列中使用 “折半查找 ”查找出待插入元素应该被插入的位置 2. 给插入位置腾出空间 3. 将待插入元素复制到表中的插入位置
public class 折半插入排序 {
public static void main(String[] args) {
int nums[]={6,1,3,2,4};
sort(nums);
System.out.println(Arrays.toString(nums));
}
static void sort(int nums[]){
int j;
for (int i=1;i<nums.length;i++){
int temp=nums[i];
int low = 0; int high=i-1;
while (low<=high){
int mid = low+(high-low)/2;
if (temp<nums[mid])high=mid-1;
else low=mid+1;
}
for (j= i-1;j>high;j--){
nums[j+1]=nums[j];
}
nums[j+1]=temp;
}
}
}
|