二分方法定位老是忘前定一位或者往后定一位。
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;
}
}