下面的顺序查找算法采用了倒序查找的方式, 以保持程序的一致性. 就是把数组下标为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]:
");
scanf("%d", &search);
pos = orderSearch(data, search, max);
if (pos) {
printf("查找成功, %d %d
", pos, data[pos]);
} else {
printf("查找失败, 数组中没有这个元素
");
}
print(data, max);
return 0;
}
void print (int arr[], int length) {
printf("
");
printf("数组内的全部元素如下:
");
int i;
for (i=0; i<length; i++) {
printf("%d %d
", i, arr[i]);
}
printf("
");
}
// 参数: 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--;
}
}