指標數組(二)

來源:互聯網
上載者:User

[例6-25] 對已排好序的字元指標數組進行指定字串的尋找。字串按字典順序排列,尋找演算法採用二分法,或稱為折半尋找。折半尋找演算法描述:

1.設按開序(或降序)輸入n個字串到一個指標數組。

2.設low指向指標數組的低端,high指向指標數組的高端,mid=(low+high)/2

3.測試mid所指的字串,是否為要找的字串。

4.若按字典順序,mid所指的字串大於要尋找的串,表示被查字串在low和mid之間,否則,表示被查字串在mid和high之間。

5.修改low式high的值,重新計算mid,繼續尋找。

#include <stdlib.h>
#include <alloc.h>
#include <string.h>
#include <stdio.h>
main()
{
char *binary();/*函式宣告*/
char *ptr1[5],*temp;
int i,j;
for(i=0;i<5;i++)
{
ptr1[i]=malloc(20);/*按字典順序輸入字串*/
gets(ptr1[i]);
}
printf("\n");
printf("original string:\n");
for(i=0;i<5;i++)
printf("%s\n",ptr1[i]);
printf("input search string:\n");
temp=malloc(20);
gets(temp);/輸*入被尋找字串*/
i=5;
temp=binary(ptr1,temp,i);/*調用尋找函數*/
if(temp)printf("succesful-----%s\n",temp);
else printf("nosuccesful!\n");
return;
}
char *binary(char *ptr[],char *str,int定n)義返回字元指標的函數*/
{/*折半尋找*/
int hig,low,mid;
low=0;
hig=n-1;
while(low<=hig)
{
mid=(low+hig)/2;
if(strcmp(str,ptr[mid])<0)
hig=mid-1;
else if(strcmp(str,ptr[mid])>0)
low=mid+1;
else return(str);/*查帳成功,返回被查字串*/
}
return NULL; / *尋找失敗,返回null 指標* /
}

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。