C語言實現(xiàn)兩個遞減數(shù)列中尋找某一個數(shù)
本文實例講述了C語言實現(xiàn)兩個遞減數(shù)列中尋找某一個數(shù)的方法,分享給大家供大家參考之用。具體方法如下:
通常來說這道題算二分查找法中非常有難度的一題了。
題目如下:
一個數(shù)組是由一個遞減數(shù)列左移若干位形成,比如{4, 3, 2, 1, 6, 5}是由{6, 5, 4, 3, 2, 1}左移兩位,在這種數(shù)組中查找某一個數(shù)。
實現(xiàn)代碼如下:
int array[] = {4, 3, 2, 1, 6, 5};
const int size = sizeof array / sizeof *array;
int findMinNumber(int (&array)[size], int start, int last, int dest)
{
int mid = (last - start) / 2 + start;
int result;
if(start > last) {
return -1;
}
if(array[mid] == dest) {
result = mid;
return result;
}
if(array[mid] <= array[start]) {
if(dest > array[mid] && dest <= array[start]) {
last = mid - 1;
result = findMinNumber(array, start, last, dest);
}
else {
start = mid + 1;
result = findMinNumber(array, start, last, dest);
}
} else if(array[mid] > array[start]) {
if(dest < array[mid] && dest >= array[last]) {
start = mid + 1;
result = findMinNumber(array, start, last, dest);
}
else {
last = mid - 1;
result = findMinNumber(array, start, last, dest);
}
}
return result;
}
程序運行結(jié)果如下圖所示:

希望本文所述對大家C程序算法設(shè)計的學(xué)習(xí)有所幫助。
- c語言的cps實現(xiàn)求fibonacci數(shù)列示例
- C語言柔性數(shù)組實例詳解
- C語言構(gòu)建動態(tài)數(shù)組完整實例
- C語言安全之?dāng)?shù)組長度與指針實例解析
- C語言安全編碼數(shù)組記法的一致性
- C語言安全編碼之?dāng)?shù)組索引位的合法范圍
- c語言動態(tài)數(shù)組示例
- 約瑟夫環(huán)問題(數(shù)組法)c語言實現(xiàn)
- C語言二維數(shù)組的處理實例
- 深入理解c語言數(shù)組
- C語言數(shù)組指針的小例子
- c語言中用字符串?dāng)?shù)組顯示菜單的解決方法
- C語言中全局?jǐn)?shù)組和局部數(shù)組的問題
相關(guān)文章
c++實現(xiàn)逐行讀取配置文件寫入內(nèi)存的示例
這篇文章主要介紹了c++實現(xiàn)逐行讀取配置文件寫入內(nèi)存的示例,需要的朋友可以參考下2014-05-05
詳解C語言隨機數(shù)設(shè)置的三種方式(保姆級教程)
本篇文章將為大家介紹在C語言中設(shè)置隨機數(shù)的三大方法的使用,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C語言有一定的幫助,需要的可以參考一下2022-11-11

