折半插入排序

package lbs;

import java.util.Arrays;

//折半插入排序
public class Num2 {
    public static void main(String[] args) {
        System.out.println("折半插入排序:");
        int arr[] = {2,4,1,3,5,7,9,8,6};
        System.out.println(Arrays.toString(arr));
        
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] < arr[i-1]) {
                int temp = arr[i];
                int low = 0;
                int high = i-1;
                while (low <= high ) {
                    int mid = (low + high) / 2;
                    if (arr[mid] < temp) {
                        low = mid + 1;
                    } else {
                        high = mid - 1;
                    }
                }
                for (int j = i; j > low; j--) {
                    arr[j] = arr[j-1];
                }
                arr[low] = temp;
            }
        }
        
        System.out.println(Arrays.toString(arr));
    }

}

 

posted @ 2022-03-20 17:44  tobeachallenger  阅读(37)  评论(0)    收藏  举报