算法导论习题2.3-6 用二分查找改进插入排序(c实现)

来源:互联网 发布:武汉软件新城 大巴 编辑:程序博客网 时间:2024/05/16 03:39
#include<stdio.h>void sort(int s[],int size){        for(int i = 1;i <size; i++)          {                 int key = s[i];              int low = 0;              int high = i-1;               int middle = low;              while(low<=high)              {                  middle = (low+high)/2;                  if(s[middle] == key)                      break;                  else if(key < s[middle]) high = middle-1;                  else low = middle+1;              }              if(key>s[middle]){for(int j = i-1; j>middle ; j--)  {  s[j+1] = s[j];  }  s[middle+1] = key;}else{for(int j = i-1; j>=middle ; j--)  {  s[j+1] = s[j];  }    s[middle] = key;}}}int main(){int s[5]={4,9,13,16,5};sort(s,5);for(int i=0;i<5;i++){printf("%d ",s[i]);}printf("\n");return 0;}

0 0