C语言实现两个递减数列中寻找某一个数

 更新时间:2014年09月17日 11:51:00   投稿:shichen2014  
这篇文章主要介绍了C语言实现两个递减数列中寻找某一个数,是一类经典的数组操作算法,需要的朋友可以参考下

本文实例讲述了C语言实现两个递减数列中寻找某一个数的方法,分享给大家供大家参考之用。具体方法如下:

通常来说这道题算二分查找法中非常有难度的一题了。

题目如下:

一个数组是由一个递减数列左移若干位形成,比如{4, 3, 2, 1, 6, 5}是由{6, 5, 4, 3, 2, 1}左移两位,在这种数组中查找某一个数。

实现代码如下:

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;
}

程序运行结果如下图所示:

希望本文所述对大家C程序算法设计的学习有所帮助。

相关文章

  • C/C++ QT实现自定义对话框的示例代码

    C/C++ QT实现自定义对话框的示例代码

    对话框分为多种,常见的有通用对话框,自定义对话框,模态对话框,非模态对话框等,本文主要介绍了QT自定义对话框,感兴趣的可以了解一下
    2021-11-11
  • C语言中回调函数的使用详情

    C语言中回调函数的使用详情

    这篇文章主要介绍了C语言中回调函数的使用详情,阅读下文我们将学习到架构的核心理念和需、回调函数的作用、回调函数的程序编写等内容,需要的小伙伴可以参考一下
    2022-03-03
  • C语言中 “_at()” 特殊地址定位详解

    C语言中 “_at()” 特殊地址定位详解

    这篇文章主要介绍了C语言中 “_at()” 特殊地址定位详解的相关资料,需要的朋友可以参考下
    2017-05-05
  • 简述C++11就地初始化与列表初始化

    简述C++11就地初始化与列表初始化

    这篇文章主要介绍了C++11就地初始化与列表初始化的相关资料,帮助大家更好的理解和学习C++,感兴趣的朋友可以了解下
    2020-08-08
  • 利用C++实现⾃然连接操作算法

    利用C++实现⾃然连接操作算法

    这篇文章主要介绍了利用C++实现⾃然连接操作算法,文章围绕主题展开详细的内容介绍,具有一定参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • C++ DFS算法实现走迷宫自动寻路

    C++ DFS算法实现走迷宫自动寻路

    这篇文章主要为大家详细介绍了C++ DFS算法实现走迷宫自动寻路,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • 基于C语言实现的贪吃蛇游戏完整实例代码

    基于C语言实现的贪吃蛇游戏完整实例代码

    这篇文章主要介绍了基于C语言实现的贪吃蛇游戏完整实例代码,对于学习游戏开发的朋友有一定的借鉴价值,需要的朋友可以参考下
    2014-08-08
  • C++中int main(int argc, char** argv)的参数使用

    C++中int main(int argc, char** argv)的参数使用

    int main(int argc, char** argv) 是C和C++程序的入口点,其中argc和argv是用来接收从命令行传递给程序的参数的,本文就来介绍一下这两个参数的含义,感兴趣的可以了解一下的相关资料
    2024-01-01
  • OpenCV利用高斯模糊实现简单的磨皮美颜效果

    OpenCV利用高斯模糊实现简单的磨皮美颜效果

    这篇文章主要介绍了通过OpenCV中的高斯模糊以及双边模糊来实现一个简单的磨皮美颜效果,文中的讲解很详细,感兴趣的同学可以学习一下
    2021-12-12
  • QT实战之打开最近文档功能的实现

    QT实战之打开最近文档功能的实现

    这篇文章主要为大家详细介绍了如何利用Qt实现打开最近文档功能,并实现基本的新建、打开、保存、退出、帮助等功能,感兴趣的可以动手尝试一下
    2022-06-06

最新评论