c语言完成顺序查找与折半查找代码实现
时间: 2024-01-30 19:03:23 浏览: 60
顺序查找代码实现:
```c
int sequential_search(int arr[], int n, int key) {
int i;
for (i = 0; i < n; i++) {
if (arr[i] == key) {
return i;
}
}
return -1;
}
```
折半查找代码实现:
```c
int binary_search(int arr[], int n, int key) {
int left = 0;
int right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == key) {
return mid;
} else if (arr[mid] > key) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
```
以上是两种基本的查找算法,但折半查找只适用于已经排好序的数组。
相关问题
一个c语言程序完成顺序查找与折半查找代码实现
下面是一个完整的 C 语言程序,包含了顺序查找和折半查找的代码实现:
```c
#include <stdio.h>
// 顺序查找
int sequential_search(int arr[], int n, int target) {
for (int i = 0; i < n; i++) {
if (arr[i] == target) {
return i; // 返回目标元素的下标
}
}
return -1; // 如果数组中不存在目标元素,则返回-1
}
// 折半查找
int binary_search(int arr[], int n, int target) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid; // 返回目标元素的下标
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1; // 如果数组中不存在目标元素,则返回-1
}
int main() {
int arr[] = {1, 3, 5, 7, 9};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 5;
// 顺序查找
int index1 = sequential_search(arr, n, target);
if (index1 != -1) {
printf("目标元素 %d 在数组中的下标为 %d(顺序查找)\n", target, index1);
} else {
printf("数组中不存在目标元素 %d(顺序查找)\n", target);
}
// 折半查找
int index2 = binary_search(arr, n, target);
if (index2 != -1) {
printf("目标元素 %d 在数组中的下标为 %d(折半查找)\n", target, index2);
} else {
printf("数组中不存在目标元素 %d(折半查找)\n", target);
}
return 0;
}
```
这个程序首先定义了顺序查找和折半查找两个函数,然后在 `main` 函数中初始化了一个数组和目标元素,分别调用了这两个函数进行查找,并打印查找结果。
C语言顺序查找法和折半查找法代码实现
以下是C语言实现顺序查找和折半查找的代码实现:
1. 顺序查找
```c
#include <stdio.h>
int SeqSearch(int r[], int n, int k) {
r[0] = k; // 下标0用作哨兵存放待查找的元素
int i;
for (i = n; r[i] != k; i--); // 从后往前查找
return i; // 返回查找到的元素下标,未找到返回0
}
int main() {
int r[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int n = sizeof(r) / sizeof(int) - 1; // 数组长度
int k = 5; // 待查找元素
int index = SeqSearch(r, n, k);
if (index) {
printf("找到元素%d了,在第%d个\n", k, index);
} else {
printf("找不到该元素%d\n", k);
}
return 0;
}
```
2. 折半查找
```c
#include <stdio.h>
int BinSearch(int r[], int n, int k) {
int low = 1, high = n, mid;
while (low <= high) {
mid = (low + high) / 2;
if (r[mid] == k) {
return mid;
} else if (r[mid] > k) {
high = mid - 1;
} else {
low = mid + 1;
}
}
return 0; // 未找到返回0
}
int main() {
int r[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int n = sizeof(r) / sizeof(int) - 1; // 数组长度
int k = 5; // 待查找元素
int index = BinSearch(r, n, k);
if (index) {
printf("找到元素%d了,在第%d个\n", k, index);
} else {
printf("找不到该元素%d\n", k);
}
return 0;
}
```
阅读全文