zhangIT 发表于 2013-2-3 11:27:37

HalfInsertSort

public class 二分插入 {void HalfInsertSort(int a[], int len){   int i, j,temp;   int low, high, mid;   for (i=1; i<len; i++)   {          temp = a;/* 保存但前元素 */          low = 0;          high = i-1;          while (low <= high) /* 在a中折半查找有序插入的位置 */          {               mid = (low + high) / 2; /* 找到中间元素 */               if (a > temp)/* 如果中间元素比但前元素大,当前元素要插入到中间元素的左侧 */               {                high = mid-1;               }               else    /* 如果中间元素比当前元素小,但前元素要插入到中间元素的右侧 */               {                low = mid+1;               }          }       /* 找到当前元素的位置,在low和high之间 */          for (j=i-1; j>high; j--)/* 元素后移 */          {         a = a;          }          a = temp; /* 插入 */   }}}
页: [1]
查看完整版本: HalfInsertSort