/*
程式改錯:
找出乙個有序字串陣列arr中值等於字串v的元素的序號,如果有多個元素滿足這樣的條件,則返回其中序號最大的
程式中的錯誤:
1 midindex = (minindex + maxindex)/2;這樣可能會由於求和中間結果而溢位,應該改為midindex = minindex + (maxindex - minindex)/2;
2 迴圈的終止條件可能無法達到,比如minindex = 2,maxindex = 3,arr[minindex] <= v的時候,程式將進入死迴圈
輸入:7
machao
anben bichao chaoge machao machao mayan naonu
2machao
machao machao
1machao
machao
輸出:410
*//*
關鍵:1 midindex = (minindex + maxindex)/2;這樣可能會由於求和中間結果而溢位,應該改為midindex = minindex + (maxindex - minindex)/2;
2 迴圈的終止條件可能無法達到,比如minindex = 2,maxindex = 3,arr[minindex] <= v的時候,程式將進入死迴圈
3 while(low < high - 1)//迴圈結束有兩種情況:1若low為偶數,那麼low = high 2 low = high -1
4 if(strcmp(arr[mid],v) <= 0)
5 else
else if(!strcmp(arr[low],v)) */
#include #include const int maxsize = 100;
int binarysearch(char arr[maxsize],int low,int high,char* v)
else
}if(!strcmp(arr[high],v))//先判斷序號最大的值
else if(!strcmp(arr[low],v))
else }
void process()
scanf("%s",strsea);
for(int i = 0 ; i < n ; i++)
printf("%d\n",binarysearch(strarr,0,n-1,strsea)); }}
int main(int argc,char* argv)
構建之法第三章
構建之法第三章 本章為軟體工程師的成長,主要介紹了評價軟體工程師水平的主要方法,技能的反面,tsp對個人的要求。軟體開發流程 軟體開發流程包括團隊的流程,也包括個人的流程 初級軟體工程師有幾方面成長 1 積累軟體開發相關的知識,提公升技術技能 2 積累問題領域的知識和經驗 3 對通用的軟體設計思想和...
程式設計之美 第三章 結構之法 3 9重建二叉樹
重建二叉樹 給定一顆二叉樹,假設每個節點都用唯一的字元來表示 假設已經有了前序和中序遍歷結果,希望通過乙個演算法來重建這課樹 給定函式如下 void rebuild char ppreorder,char pinorder,int itreelen,node proot itreelen 樹的長度,...
Linux程式設計之 第三章 檔案操作
本篇主要是針對linux中的檔案 目錄以及相關操作。主要介紹系統呼叫和標準i o庫。linux中,一切都是以檔案的形式來表示的,包括一些硬體裝置。大多數情況下,只需要使用五個基本的函式 open close read write 和ioctl。目錄也是檔案,它用來儲存其他檔案的節點號 inode 和...