折半排序

来源:互联网 发布:霍华德生涯得分数据 编辑:程序博客网 时间:2024/05/16 12:37
#include<stdio.h>#include<stdlib.h>#include<iostream>using namespace std;typedef struct{    int *r;    int length;} sqlist;void createlink(sqlist &L){    int n;    L.length=0;    cout<<"输入链表长度:"<<endl;    cin>>n;    L.r=(int*)malloc((n+1)*sizeof(int));    int i;    cout<<"输入链表元素:"<<endl;    for(i=1; i<=n; i++)    {        cin>>L.r[i];        ++L.length;    }}void print(sqlist &L){    int i;    cout<<"输出链表元素:"<<endl;    for(i=1; i<=L.length; i++)        cout<<L.r[i]<<" ";    cout<<"\n";}void binsertsort(sqlist &L){    createlink(L);    int i,j;    int mid,low,high;    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[0]<L.r[mid])                high=mid-1;            else                low=mid+1;        }        for(j=i-1; j>high; j--)            L.r[j+1]=L.r[j];        L.r[j+1]=L.r[0];    }    cout<<"折半插入排序:\n";    print(L);}int main(){    sqlist l;    binsertsort(l);    return 0;}

原创粉丝点击