C语言数组元素的查询
數(shù)組的查詢
在日常的開發(fā)過程中,我們經(jīng)常需要查詢數(shù)組中的元素,這就需要我們使用數(shù)組元素查詢的方法來進(jìn)行查詢。
對(duì)無序數(shù)組的查詢
無序數(shù)組,就是數(shù)組元素的排列沒有規(guī)律。無序數(shù)組元素查詢的思路也很簡(jiǎn)單,就是用循環(huán)遍歷數(shù)組中的每個(gè)元素,把要查詢的值挨個(gè)比較一遍。請(qǐng)看下面的代碼:
#include <stdio.h> int main(){int nums[10] = {1, 10, 6, 296, 177, 23, 0, 100, 34, 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;}}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; }運(yùn)行結(jié)果:
Input an integer: 100↙ 100 is in the array, it's index is 7.或者
Input an integer: 5↙ 5 isn't in the array.輸入一個(gè)數(shù)字,判斷該數(shù)字是否在數(shù)組中,如果在,就打印出下標(biāo)。
第10~15行代碼是關(guān)鍵,它會(huì)遍歷數(shù)組中的每個(gè)元素,和用戶輸入的數(shù)字進(jìn)行比較,如果相等就獲取它的下標(biāo)并跳出循環(huán)。
注意:數(shù)組下標(biāo)的取值范圍是非負(fù)數(shù),當(dāng) thisindex >= 0 時(shí),該數(shù)字在數(shù)組中,當(dāng) thisindex < 0 時(shí),該數(shù)字不在數(shù)組中,所以在定義 thisindex 變量時(shí),必須將其初始化為一個(gè)負(fù)數(shù)。
對(duì)有序數(shù)組的查詢
查詢無序數(shù)組需要遍歷數(shù)組中的所有元素,而查詢有序數(shù)組只需要遍歷其中一部分元素。例如有一個(gè)長(zhǎng)度為 10 的整型數(shù)組,它所包含的元素按照從小到大的順序(升序)排列,假設(shè)比較到第 4 個(gè)元素時(shí)發(fā)現(xiàn)它的值大于輸入的數(shù)字,那么剩下的 5 個(gè)元素就沒必要再比較了,肯定也大于輸入的數(shù)字,這樣就減少了循環(huán)的次數(shù),提高了執(zhí)行效率。
請(qǐng)看下面的代碼:
#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; }與前面的代碼相比,這段代碼的改動(dòng)很小,只增加了一個(gè)判斷語句,也就是 12~14 行。因?yàn)閿?shù)組元素是升序排列的,所以當(dāng) nums[i] > num 時(shí),i 后邊的元素也都大于 num 了,num 肯定不在數(shù)組中了,就沒有必要再繼續(xù)比較了,終止循環(huán)即可。
掃一掃獲取更多資訊喲!!!
總結(jié)
以上是生活随笔為你收集整理的C语言数组元素的查询的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java 将文件的内容复制到另一个文件
- 下一篇: C语言颜色设置