对于二分查找的定位问题

二分方法定位老是忘前定一位或者往后定一位。

    public static void binaryInsertSort(int[] arrays,int first,int last) 
    {
        int temp,left,right,middle;
        for (int i=first+1;i<=last;i++) 
        {
            temp=arrays[i];
            left=first;
            right=i-1;
            while(left<=right) //循环条件取上等号
            {
                middle=(left+right)/2;
                if (arrays[middle]>temp) right=middle-1;//大于键值不取等号
                else left =middle+1;

            }
            //左端即为该位置  右端都比他大并且相等的在左边
            for (int j=i-1;j>=left;j--) arrays[j+1]=arrays[j];
            arrays[left]=temp;
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_42166409/article/details/81504146