日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构--------------静态表的希尔排序

發(fā)布時間:2023/12/10 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构--------------静态表的希尔排序 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

#define?LT(a,b)?((a)<?(b))
#define?EQ(a,b)?((a)==(b))
#define?LQ(a,b)?((a)<=(b))

typedef?struct?ElemType
{//表中元素結構
?int?key;
?char?name[20];
}ElemType;

typedef?struct?SSTable
{//靜態(tài)表結構
?ElemType?*elem;
?int?length;
}SSTable;


ElemType?r[20];//全局變量,用于傳值給表元素

void?Create_SqTable(SSTable?&T,int?n)
{//創(chuàng)建順序表
?T.elem=new?ElemType?[n];
?for(int?i=1;i<=n;i++)//靜態(tài)表第一個元素不用
??T.elem[i]=r[i-1];
?T.length=n;
}

void?InPut(SSTable?&T)
{//順序表的錄入
?char?c='#';
?static?int?n=0;
?while(c!='!')
?{
?cout<<"元素關鍵字:";
?cin>>r[n].key;
?cout<<"元素名字:";
?cin>>r[n].name;
?n++;
?c=getchar();
?}
?Create_SqTable(T,n);
}

//思想:
//先將整個序列分成若干個子序列,再對子序列進行直接插入排序
//待到子序列基本有序,則對全體記錄進行一次直拉插入排序
void?ShellInsert(SSTable?&L,int?dk)
{//dk是前后記錄的增量
?int?j;
?for(int?i=dk+1;i<=L.length;++i)
??if(LT(L.elem[i].key,L.elem[i-dk].key))
??{
???L.elem[0]=L.elem[i];
???for(j=i-dk;j>0&&LT(L.elem[0].key,L.elem[j].key);j-=dk)
????L.elem[j+dk]=L.elem[j];
???L.elem[j+dk]=L.elem[0];
??}
}

void?ShellSort(SSTable?&L,int?dlta[],int?t)
{//對t個記錄進行希排序
?for(int?k=0;k<t;k++)
??ShellInsert(L,dlta[k]);
}


void?Print(SSTable?L)
{
?for(int?i=1;i<=L.length;i++)
??cout<<L.elem[i].key<<"?"<<L.elem[i].name<<endl;
}

轉載于:https://www.cnblogs.com/zhangjunjie/p/3368241.html

總結

以上是生活随笔為你收集整理的数据结构--------------静态表的希尔排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。