二分插入排序。

  1. #include <stdio.h>
  2. typedef int DataType;
  3. typedef int DataKey;
  4. typedef struct 
  5. {
  6.     DataType value;
  7.     DataKey key;
  8. }Node;
  9. typedef struct 
  10. {
  11.     int n;
  12.     Node *pNode;
  13. }sortObject;
  14. void binsort(int *s, int n)
  15. {
  16.     int i, j, left, mid, right;
  17.     
  18.     int temp;
  19.     for(i = 1; i < n; i ++)
  20.     {
  21.         temp = s[i]; 
  22.         left = 0; 
  23.         right = i - 1;
  24.         while(left <= right)
  25.         {
  26.             mid = (left + right) / 2;
  27.             if(temp < s[mid])
  28.                 right = mid - 1;
  29.             else 
  30.                 left = mid + 1;
  31.         }
  32.         for(j = i - 1; j >= left; j--)
  33.             s[j + 1] = s[j];
  34.         //if(i != left)
  35.             s[left] = temp;
  36.     }
  37. }
  38. int main(int argc, char **argv)
  39. {
  40.     
  41.     int a[9] = {1, 3, 4, 9, 23, 3, 15, 1, 5};
  42.     binsort(a, 9);
  43. int i;
  44.     for(i = 0; i<9; i++)
  45.         printf("%d ", a[i]);
  46.     printf("/n");
  47.     return 0;
  48. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值