二分查找函數(shù)封裝c語言 c++二分查找函數(shù)

用C語言創(chuàng)建一個二分查找函數(shù)

排序(冒泡)

創(chuàng)新互聯(lián)公司是一家以成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、品牌設(shè)計、軟件運維、網(wǎng)站推廣、小程序App開發(fā)等移動開發(fā)為一體互聯(lián)網(wǎng)公司。已累計為LED顯示屏等眾行業(yè)中小客戶提供優(yōu)質(zhì)的互聯(lián)網(wǎng)建站和軟件開發(fā)服務(wù)。

void(student*tmp,int size)

{

for(int j=0;jn-1;j++)

{

for(k=0;kn-1-j;k++)

{

if(strcmp(tmp[k].name,tmp[k+1].name)0)

{

student tm=tmp[k];

tmp[k]=tmp[k+1];

tmp[k]=tm;

}

}

}

}

int findOn(student*test,char*name,int begin,int end)

{

if(beginend)

{

return -1;//沒找到

}

int mid=end+((end-begin)/2);

if(strcmp(test[mid].name,name)==0)

{

return mid;

}elseif((strcmp(test[mid].name,name)0)

{

return findOn(test,name,mid+1,end);

}else

{

return findOn(test,name,begin,mid-1);

}

}

int find(student *test,int size,char* studentname)

{

return findOn(test,strudentname,0,size-1);

}

find(student,3000,"testname");

再來一個快速排序

void quickSort(student *test arr,int startPos, int endPos)

{

int i,j;

student key;

key=arr[startPos];

i=startPos;

j=endPos;

while(ij)

{

while(strcmp(arr[j].name,key.name)=0 ij)--j; //第一個比他小

{

student tmp=arr[i];

arr[i]=arr[j]; //moveed

arr[j]=tmp;

i++;

}

while((strcmp(arr[i].name,key.name)=0 ij)++i; //第一個比他大,

{

student tmp=arr[j];

arr[j]=arr[i];

arr[i]=tmp;

j--;

}

}

arr[i]=key; //賦值

if(i-1startPos) quickSort(arr,startPos,i-1);

if(endPosi+1) quickSort(arr,i+1,endPos);

}

quicksort(test,0,3000-1);

find(student,3000,"testname");

二分查找(C語言實現(xiàn))

??二分查找是一種簡單高效的查找算法。其思想在生活中廣泛應(yīng)用,比如從圖書館書架上查找書,查字典,測量領(lǐng)域中熱電偶溫度補償?shù)取?/p>

??二分查找可以用 循環(huán) 和 遞歸 兩種方式實現(xiàn)

C語言二分查找法

#include stdio.h

int binfind(int val[] , int num , int value)

{

int start = 0;

int end = num - 1;

int mid = (start + end)/2;

while(val[mid] != value start end)

{

if (val[mid] value)

{

end = mid - 1;

}

else if (val[mid] value)

{

start = mid + 1;

}

mid = ( start + end )/2;

}

if (val[mid] == value)

return mid;

else

return -1;

}

int main()

{

int nums[] = {1 , 3 , 4 ,7 ,8 , 12 ,45 ,67 ,97 ,123 ,456 ,675 ,1111 , 4534 , 4563};

int result = binfind(nums , sizeof(nums) / sizeof(nums[0]) , 45);

if (result 0)

{

printf("查無此數(shù)");

}

}

怎樣寫二分查找算法的程序(用C語言實現(xiàn))

我用一個子函數(shù)實現(xiàn)的,主函數(shù)你自己寫,對你又好處,需要傳入一個數(shù)組和數(shù)組長度n以及要查找的數(shù),如果查找成功,返回x在數(shù)組中的位置,否則返回-1

int search(int *a,int x)

{ int low=0,high=n-1,mid,flag=-1;

while(low=high)

{ mid=(low+high)/2;

if(a[mid]==x) return mid;

else if(a[mid]low) low=mid+1;

else high=mid-1;

}

return flag;

}

用C語言寫二分查找的代碼!!!

推薦答案的 code 有問題,并沒有考慮到若待查數(shù)的下標(biāo)是 0 怎么辦?所以若順序表中不存在待查元素?應(yīng)該 return?-1

加上主函數(shù)的最后兩行調(diào)用兩次查找函數(shù)很多余,代碼顯得不夠簡練。

建議改成:

#include?stdio.h

#include?stdlib.h

int?Search(int?*a,?int?key)

{

//?在順序表中折半查找?key的數(shù)據(jù)元素。若找到,則函數(shù)值為

int?low?=?0,?mid;?//?該元素的數(shù)組下標(biāo);否則為0。

int?high?=?14;

while?(low?=?high)

{

mid?=?(low?+?high)?/?2;

if?(key?==?a[mid])

return?mid;?//?找到待查元素

else?if?(key??a[mid])

high?=?mid?-?1;?//?繼續(xù)在前半?yún)^(qū)間進行查找

else

low?=?mid?+?1;?//?繼續(xù)在后半?yún)^(qū)間進行查找

}

return?-1;?//?順序表中不存在待查元素

}

void?main()

{

int?*a,?key,?i;

int?b[15]?=?{0};

a?=?b;

printf("請自小到大輸入15個整數(shù):\n");

for?(i?=?1;?i?=?15;?i++)

{

scanf("%d",?b[i?-?1]);

printf("\n");

}

printf("請輸入你要查找的數(shù):\n");

scanf("%d",?key);

i?=?Search(a,?key);

if?(-1?==?i)

printf("你要查找的數(shù)不在目標(biāo)數(shù)組中!\n");

else

printf("你要查找的數(shù)的數(shù)組下標(biāo)為?%d?\n",?i);

}

當(dāng)前標(biāo)題:二分查找函數(shù)封裝c語言 c++二分查找函數(shù)
鏈接分享:http://m.kartarina.com/article4/hgpcoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google網(wǎng)站制作靜態(tài)網(wǎng)站軟件開發(fā)電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
主站蜘蛛池模板: 精品无码中出一区二区| 亚洲AV无码一区二区三区久久精品| 国产成人精品无码专区| 岛国无码av不卡一区二区| 亚洲成A人片在线观看无码不卡| 亚洲国产精品无码久久久| 亚洲精品无码99在线观看| 亚洲AV中文无码乱人伦下载| 亚洲AV无码AV吞精久久| 人禽无码视频在线观看| 中文字幕乱偷无码AV先锋| 无码办公室丝袜OL中文字幕 | 亚洲av永久无码精品网址| 亚洲成a人无码av波多野按摩| 青青草无码免费一二三区| 久久久久无码精品| 免费无码不卡视频在线观看| 日韩国产成人无码av毛片| 国产成人无码AⅤ片在线观看| 黄色成人网站免费无码av| 精品人无码一区二区三区| 亚洲国产精品无码久久久秋霞2| 亚洲高清无码专区视频| 日韩少妇无码喷潮系列一二三| 日韩精品久久无码中文字幕| 无码人妻精品一区二区三区在线 | 东京热无码av一区二区| 国产精品白浆无码流出| 国产丰满乱子伦无码专| 久久中文字幕无码一区二区| 亚洲视频无码高清在线| 无码区日韩特区永久免费系列 | 亚洲中文字幕无码一区二区三区 | 人妻AV中出无码内射| 国产精品无码永久免费888 | 一级电影在线播放无码| 69成人免费视频无码专区| 日韩中文无码有码免费视频| 国产色无码精品视频国产| 成在线人免费无码高潮喷水| 亚洲国产精品无码专区影院|