第十一讲
二分排序(折半插入排序法)的基本思想是:设有一个序列a[0],a[1]......a[n];其中a[i-1]个有序,插入a[i],利用二分法搜索a[i]插入的位置。
程序如下:
public class Binary {
public static void main(String[] args) {
int arr[] = { 90, 343, 12, 3, -13, 45 };
BinaryCharu hs = new BinaryCharu();
hs.half(arr);
}
}
class BinaryCharu {
public void half(int a[]) {
int left, right, mid;
int number;
for (int i = 1; i < a.length; i++) {
left = 0;
right = i - 1;
number = a[i];
// 通过二分法定位数据number的位置
while (left <= right)
{
mid = (left + right) / 2;
if (number < a[mid])
{
right = mid - 1;
}
else
{
left = mid + 1;
}
}
for (int j = i - 1; j >= left; j--)
{
a[j + 1] = a[j];
}
a[left] = number;
}
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
}
}