6-1 折半插入排序

分数 13

全屏浏览

切换布局

作者 王东

单位 贵州师范学院

实现折半插入排序。

函数接口定义:


void BInsertSort(SqList &L);

裁判测试程序样例:


#include <iostream> #define MAXSIZE 1000 using namespace std; typedef struct { int key; char *otherinfo; }ElemType; typedef struct { ElemType *r; int length; }SqList; void BInsertSort(SqList &L); void Create_Sq(SqList &L);//实现细节隐藏 void show(SqList L) { int i; for(i=1;i<=L.length;i++) if(i==1) cout<<L.r[i].key; else cout<<" "<<L.r[i].key; } int main() { SqList L; L.r=new ElemType[MAXSIZE+1]; L.length=0; Create_Sq(L); BInsertSort(L); show(L); return 0; } /* 请在这里填写答案 */

输入样例:

第一行输入一个数n(输入的值不大于 MAXSIZE),接下来输入n个数。

7
24 53 45 45 12 24 90

输出样例:

输出排序结果。

12 24 24 45 45 53 90

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

void BInsertSort(SqList &L)
{
    int i,j,low,high,mid;
    for(i=2;i<L.length;i++)
    {
        L.r[0]=L.r[i];
        low=1,high=i-1;
        while(low<=high)
        {
            mid=(low+high)/2;
            if(L.r[mid].key>L.r[0].key) high=mid-1;
            else low=mid+1;
        }
        for(j=i-1;j>=high+1;j--) L.r[j+1]=L.r[j];
        L.r[high+1]=L.r[0];
    }
}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐