c++实现查找表的顺序查找和折半查找
时间: 2024-02-13 07:59:44 浏览: 78
C语言实现顺序表的顺序查找和折半查找
顺序查找(线性查找)是一种简单直观的查找方法,适用于线性表的任何情况,但是时间复杂度较高,平均时间复杂度为O(n)。
C++实现顺序查找的代码如下:
```c++
#include<iostream>
using namespace std;
int seqSearch(int arr[], int n, int key){
int i;
for(i = 0; i < n; i++){
if(arr[i] == key)
return i;
}
return -1; //未找到
}
int main(){
int arr[] = {10, 3, 8, 6, 11, 7};
int n = sizeof(arr) / sizeof(arr[0]);
int key = 6;
int pos = seqSearch(arr, n, key);
if(pos == -1)
cout << "未找到" << endl;
else
cout << "找到,位置是:" << pos << endl;
return 0;
}
```
折半查找(二分查找)是一种基于比较的查找算法,适用于已排序的数组,时间复杂度为O(log n)。
C++实现折半查找的代码如下:
```c++
#include<iostream>
using namespace std;
int binarySearch(int arr[], int n, int key){
int low = 0, high = n - 1;
while(low <= high){
int mid = (low + high) / 2;
if(arr[mid] == key)
return mid;
else if(arr[mid] < key)
low = mid + 1;
else
high = mid - 1;
}
return -1; //未找到
}
int main(){
int arr[] = {3, 6, 7, 8, 10, 11};
int n = sizeof(arr) / sizeof(arr[0]);
int key = 6;
int pos = binarySearch(arr, n, key);
if(pos == -1)
cout << "未找到" << endl;
else
cout << "找到,位置是:" << pos << endl;
return 0;
}
```
需要注意的是,折半查找的数组必须是有序的,否则需要先排序后再进行查找。
阅读全文