查找数组里面的数

时间:2015-05-12 01:40:29   收藏:0   阅读:137

有一个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;   }
评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!