Java实现折半(二分)插入排序

时间:2024-11-11 23:07:50
 /*折半插入查找思想:每趟将一个带排序的元素作为关键字插入到已经排好的部分序列的适当位置上,查找适当位置的方法用折半查找法
* 适合记录数较多的场景
* 在查找插入位置时节省了时间
* 在记录移动次数方面和直接插入查找是一样的,所以时间复杂度还是O(n^2)
* 空间复杂度同为O(1)*/ import java.util.Scanner; public class zhebancharusort { public static void main(String args[]){
Scanner cin = new Scanner(System.in);
String str = cin.nextLine();
String st[] = str.split(" ");
int num[] = new int[st.length];
for(int i=0;i<st.length;i++){
num[i]=Integer.parseInt(st[i]);
}
sort(num);
for(int j=0;j<st.length;j++){
System.out.print(num[j]);
System.out.print(" ");
}
cin.close();
}
public static void sort(int R[]){
for(int i=1;i<R.length;i++){
if(R[i]<R[i-1]){
int low=0;
int high=i-1;
int temp = R[i];
while(low<=high){
int mid = (int)((low+high)/2);
if(R[mid]<temp){
low=mid+1;
}else{
high=mid-1;
}
}
for(int j=i;j>low;j--){
R[j]=R[j-1];
}
R[low]=temp;
}
}
}
}