C语言对有序数组的查询
发布时间:2023-05-12 12:38:17 所属栏目:语言 来源:
导读:查询无序数组需要遍历数组中的所有元素,而查询有序数组只需要遍历其中一部分元素。例如有一个长度为 10 的整型数组,它所包含的元素按照从小到大的顺序(升序)排列,假设比较到第 4 个元素时发现它的值大于输入的数
|
查询无序数组需要遍历数组中的所有元素,而查询有序数组只需要遍历其中一部分元素。例如有一个长度为 10 的整型数组,它所包含的元素按照从小到大的顺序(升序)排列,假设比较到第 4 个元素时发现它的值大于输入的数字,那么剩下的 5 个元素就没必要再比较了,肯定也大于输入的数字,这样就减少了循环的次数,提高了执行效率。 请看下面的代码: #include <stdio.h> int main(){ int nums[10] = {0, 1, 6, 10, 23, 34, 100, 177, 296, 999}; int i, num, thisindex = -1; printf("Input an integer: "); scanf("%d", &num); for(i=0; i<10; i++){ if(nums[i] == num){ thisindex = i; break; }else if(nums[i] > num){ break; } } if(thisindex < 0){ printf("%d isn't in the array.\n", num); }else{ printf("%d is in the array, it's index is %d.\n", num, thisindex); } return 0; } 与前面的代码相比,这段代码的改动很小,只增加了一个判断语句,也就是 12~14 行。因为数组元素是升序排列的,所以当 nums[i] > num 时,i 后边的元素也都大于 num 了,num 肯定不在数组中了,就没有必要再继续比较了,终止循环即可。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
