码迷,mamicode.com
首页 > 编程语言 > 详细

查找数组里面的数

时间:2015-05-12 01:40:29      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

有一个int型数组,每两个相邻的数之间的差值不是1就是-1.现在给定一个数,要求查找这个数在数组中的位置。
其实思想就是跳跃查找,因为你知道了一个数,那么它第二个数最多相差1,第三个数最多相差2,而可以用目标数减去这个数来排除一些多余的查找,比如你要的数是10,第一个数是2,那么它前7个数无论如何都达不到10,只有在第8个数才有可能,所以可以直接判断第8个数。
下面是别人的代码借用一下思想大概就是这样:

void PrintfArray(int a[], int n)     {       for (int i = 0; i < n; i++)           printf("%d ", a[i]);       putchar(‘\n‘);     }    int FindNumberInArray(int arr[], int n , int find_number)   {     int next_arrive_index = abs(find_number - arr[0]);     while (next_arrive_index < n)     {       if (arr[next_arrive_index] == find_number)         return next_arrive_index;       next_arrive_index += abs(find_number - arr[next_arrive_index]);     }     return -1;   }

查找数组里面的数

标签:

原文地址:http://blog.csdn.net/a819721810/article/details/45654623

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!