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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

数据结构C语言版之查找(折半选择快速等)

發布時間:2025/4/16 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构C语言版之查找(折半选择快速等) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//查找: #include<stdio.h> #include<time.h> #include<stdlib.h> typedef struct{ int *elem;int length; }SStable; typedef struct SYlist{int num;int *Key;int *start; }SYlist; void CreatSearchlist(SStable &S) {int i;printf("請輸入表長:\n");scanf("%d",&S.length);S.elem=(int*)malloc((S.length)*sizeof(int));for(i=1;i<S.length;i++)S.elem[i]=rand()%89+10; } int Search(SStable S,int key) {S.elem[0]=key;while(S.elem[S.length]!=key)S.length--;return S.length; } void ShowSStable(SStable S) {int i;for(i=1;i<S.length;i++)printf("%5d",S.elem[i]);printf("\n"); } void Sort(SStable &S) {int i,j,temp;for(i=1;i<S.length-1;i++){for(j=1;j<S.length-i-1;j++){if(S.elem[j]>S.elem[j+1]){temp=S.elem[j];S.elem[j]=S.elem[j+1];S.elem[j+1]=temp;}}}ShowSStable(S); } int Zbsearch(SStable S,int e) {int mid,high=S.length-1,low=1;while(low<=high){mid=(low+high)/2;if(S.elem[mid]==e)return mid;else if(S.elem[mid]<e)low=mid+1;elsehigh=mid-1;}return 0; } void CreatSylist(SYlist &sy,SStable &S) {int i,n;printf("\n\n\n建立索引表:\n");printf("請輸入數據個數:\n");scanf("%d",&n);S.length=n+1;S.elem=(int*)malloc((S.length)*sizeof(int));printf("請輸入一組數(局部有序):\n");for(i=1;i<S.length;i++)scanf("%d",&S.elem[i]);printf("請輸入關鍵字個數:\n");scanf("%d",&sy.num);sy.Key=(int*)malloc(sy.num*sizeof(int));sy.start=(int*)malloc(sy.num*sizeof(int));for(i=0;i<sy.num;i++){ printf("請輸入第%d個關鍵字:\n",i+1);scanf("%d",&sy.Key[i]);printf("請輸入該關鍵字的位置:\n");scanf("%d",&sy.start[i]);} } int Sysearch(SYlist sy,SStable S,int m) {int i=0,j;while(m>sy.Key[i])i++;if(i>0 && i<sy.num-1){for(j=sy.start[i];j<sy.start[i+1];j++){if(S.elem[j]==m)return j;}}if(i==0){for(j=1;j<sy.start[1];j++){if(S.elem[j]==m)return j;}}if(i>=sy.num-1){for(j=sy.start[sy.num];j<S.length;j++){if(S.elem[j]==m)return j;}} } int main() {SStable S;SYlist sy;int key,e,m;srand(time(0));CreatSearchlist(S);printf("隨機產生的%d個兩位數構造的查找表為:\n",S.length-1);ShowSStable(S);printf("\n請輸入要查找的數:");scanf("%d",&key);if(Search(S,key))printf("查找成功!該數在表中的位置為:%d\n",Search(S,key));elseprintf("查找失敗!\n");printf("對表中數據按遞增進行排序后的序列為:\n");Sort(S);printf("\n請輸入要查找的數:");scanf("%d",&e);if(Zbsearch(S,e))printf("折半查找成功!該數在表中的位置為:%d\n",Zbsearch(S,e));elseprintf("查找失敗!\n");CreatSylist(sy,S);printf("\n請輸入要查找的數:");scanf("%d",&m);Sysearch(sy,S,m);if(Sysearch(sy,S,m))printf("查找成功!該數在表中的位置為:%d\n",Sysearch(sy,S,m));elseprintf("查找失敗!\n");return 0; }

轉載于:https://www.cnblogs.com/zhuhengjie/p/5966923.html

總結

以上是生活随笔為你收集整理的数据结构C语言版之查找(折半选择快速等)的全部內容,希望文章能夠幫你解決所遇到的問題。

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