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程序算法设计的学习有所帮助。

相关文章

  • Qt5.9画五角星的方法

    Qt5.9画五角星的方法

    这篇文章主要为大家详细介绍了Qt5.9画五角星的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • 详解C++设计模式编程中对访问者模式的运用

    详解C++设计模式编程中对访问者模式的运用

    这篇文章主要介绍了C++设计模式编程中对访问者模式的运用,访问者模式在不破坏类的前提下为类提供增加新的新操作,需要的朋友可以参考下
    2016-03-03
  • 基于C语言指令的深入分析

    基于C语言指令的深入分析

    本篇文章是对C语言的指令进行了详细的分析与介绍,需要的朋友参考下
    2013-05-05
  • 一元多项式加法运算

    一元多项式加法运算

    今天小编就为大家分享一篇关于一元多项式加法运算,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 深入java线程池的使用详解

    深入java线程池的使用详解

    本篇文章是对java线程池的使用进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C语言求解定积分的方法

    C语言求解定积分的方法

    这篇文章主要为大家详细介绍了C语言求解定积分的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • C++ string格式化输出方式

    C++ string格式化输出方式

    今天小编就为大家分享一篇C++ string格式化输出方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • C++生成随机数的实现代码

    C++生成随机数的实现代码

    这篇文章主要介绍了C++生成随机数的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • QT实现提示右下角冒泡效果

    QT实现提示右下角冒泡效果

    这篇文章主要为大家详细介绍了QT实现提示右下角冒泡效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • c++11 符号修饰与函数签名、函数指针、匿名函数、仿函数、std::function与std::bind

    c++11 符号修饰与函数签名、函数指针、匿名函数、仿函数、std::f

    这篇文章主要介绍了c++11 符号修饰与函数签名、函数指针、匿名函数、仿函数、std::function与std::bind,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05

最新评论