下面的順序查找算法采用了倒序查找的方式, 以保持程序的一致性. 就是把數組下標為0的,
元素空下來, 不存放具體的元素, 而是存放要查找的元素. 這樣在查找的過程中, 采用倒序
遍歷的方式, 即從數組最后一個元素開始一直遍歷到第0個數組元素.
#include <stdio.h>
#include <stdlib.h>
void print (int arr[], int length);
int orderSearch (int arr[], int val, int max);
int main() {
int i;
int max = 21; // 數組最大容量
int data[max];
int search; // 要查找的值
int pos; // 要查找的元素在數組中的位置
// 為數組賦值max個范圍在[1, 150]的隨機數
for (i=1; i<max; i++) {
// 數組的下標0不用來存儲數據
data[i] = rand() % 150 + 1;
}
printf("清輸入要查找的值, 取值范圍是[1, 150]: \n");
scanf("%d", &search);
pos = orderSearch(data, search, max);
if (pos) {
printf("查找成功, %d %d\n", pos, data[pos]);
} else {
printf("查找失敗, 數組中沒有這個元素\n");
}
print(data, max);
return 0;
}
void print (int arr[], int length) {
printf("\n");
printf("數組內的全部元素如下: \n");
int i;
for (i=0; i<length; i++) {
printf("%d %d\n", i, arr[i]);
}
printf("\n");
}
// 參數: arr查找數組 val查找值 max數組容量
int orderSearch (int arr[], int val, int max) {
arr[0] = val;
max--;
while (max != -1) {
if (arr[max] == val) {
return max;
}
max--;
}
}