写一个java程序,用二分法把6插入到数组[1,2,5,7,8,9,13]

写一个java程序,用二分法把6插入到数组[1,2,5,7,8,9,13]

public class T {
 public static void main(String args[]) {
  int[] tempData = new int[] { 1, 2, 5, 7, 8, 9, 13, 6 };
  new T().TwoInsertSort(tempData);
 }
 public void TwoInsertSort(int[] tempData) {
  int left, right, num;
  int middle, j;
  for (int i = 1; i < tempData.length; i++) {
   // 准备
   left = 0;
   right = i - 1;
   num = tempData[i];
   // num = 6;
   // 二分法查找插入位置
   while (right >= left) {
    // 指向已排序好的中间位置
    middle = (left + right) / 2;
    if (num < tempData[middle])
     // 插入的元素在右区间
     right = middle - 1;
    else {
     // 插入的元素在左区间
     left = middle + 1;
    }
   }
   // 后移排序码大于R[i]的记录
   for (j = i - 1; j >= left; j--) {
    tempData[j + 1] = tempData[j];
   }
   // 插入
   tempData[left] = num;
  }
  for (int i = 0; i < tempData.length; i++) {
   System.out.println(tempData[i]);
  }
 }
}

温馨提示:答案为网友推荐,仅供参考
相似回答