折半插入排序

来源:互联网 发布:网络电视机软件下载 编辑:程序博客网 时间:2024/06/10 23:31

折半插入排序:

       折半插入排序是一个稳定的排序算法,时间复杂度为O(n^2)。

下面实现的是从小到大排序

package InsertSort;

import java.util.Scanner;


public class BinaryInsertSort {
public static void binaryInsertSort(int num[]){
int n = num.length;
int i,j;
for(i=1;i<n;i++){
int temp = num[i];//待插入的数
int low = 0;
int high = i-1;

while(low<=high){
int mid = (low+high)/2;
if(num[mid]>temp){
high = mid-1;//如果插入的数小于中间的数,则high指针指到mid-1
}
else{
low = mid +1;//如果插入的数大于中间的数,则low指针指到mid+1
}
}
for(j=i-1;j>=low;j--){
num[j+1] = num[j];
}//元素后移
num[low] = temp;//插入temp
}
for(int k=0;k<n;k++){
        System.out.print(num[k]+" ");
        }
        System.out.println();
}

public static void main(String[] args) {
System.out.println("请输入需排序序列:");
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
String arr[] = str.split(" ");
int num[] = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
num[i] = Integer.parseInt(arr[i]);
}
binaryInsertSort(num);
}
}
                                             
原创粉丝点击