博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++顺序检索、二分检索,并统计比较次数,体现最好、最差、平均三种情况
阅读量:3968 次
发布时间:2019-05-24

本文共 1730 字,大约阅读时间需要 5 分钟。

//实验四

#include 
using namespace std;//顺序查找与二分查找//顺序查找就是循环//二分查找//使用前提:数据必须排序int ordersearch(int* a, int x, int n, int count[]){
int k; for (int i=0; i < n; i++) {
count[0]++; if (a[i] == x) {
k = i; cout << "找到了元素位置:" << k << endl; return k; } }}int binarysearch(int* a, int x, int n, int count[]){
int low; int high; low = 0; high = n - 1; while (low <= high) {
int mid = (low + high) / 2; count[0]++; if (a[mid] == x) {
cout << "找到了元素位置:" << mid << endl; return mid; } else if (a[mid] < x) {
low = mid + 1; } else if (a[mid] > x) {
high = mid - 1; } } return -1;}int main() {
int a[] = {
11,33,44,56,78,89,99,101,123,235,678 }; int count[1] = {
0 }; int num = sizeof(a) / sizeof(int); //cout << (9 + 10) / 2 << endl; count[0] = 0; ordersearch(a, 678, num, count); cout << "顺序检索在最差情况下(这里用的是检索的是最后一个)的比较次数为:" << count[0] << endl; count[0] = 0; binarysearch(a, 678, num,count); cout << "二分检索在最差情况下(这里用的是检索的是最后一个)的比较次数为:" << count[0] << endl; count[0] = 0; ordersearch(a, 99, num, count); cout << "顺序检索在一般情况下(这里用的是检索的是中间一个)的比较次数为:" << count[0] << endl; count[0] = 0; binarysearch(a, 99, num, count); cout << "二分检索在一般情况下(这里用的是检索的是中间一个)的比较次数为:" << count[0] << endl; count[0] = 0; ordersearch(a, 11, num, count); cout << "顺序检索在最佳情况下(这里用的是检索的是第一个)的比较次数为:" << count[0] << endl; count[0] = 0; binarysearch(a, 11, num, count); cout << "二分检索在最佳情况下(这里用的是检索的是第一个)的比较次数为:" << count[0] << endl; return 0;}

在这里插入图片描述

转载地址:http://svcki.baihongyu.com/

你可能感兴趣的文章
终于&nbsp;整明白了中断的工作原…
查看>>
终于&nbsp;整明白了中断的工作原…
查看>>
2010年11月19日
查看>>
2010年11月19日
查看>>
TC35i&nbsp;单片机
查看>>
TC35i&nbsp;单片机
查看>>
AT&nbsp;命令详解
查看>>
AT&nbsp;命令详解
查看>>
AT指令发送PDU中文短信——使用串口…
查看>>
AT指令发送PDU中文短信——使用串口…
查看>>
s3c2440&nbsp;uart
查看>>
指针的使用注意事项(个人体…
查看>>
指针的使用注意事项(个人体…
查看>>
~c++中的指针使用注意事项
查看>>
~c++中的指针使用注意事项
查看>>
函数返回值、引用和指针的区别思考
查看>>
函数返回值、引用和指针的区别思考
查看>>
AT指令中文手册
查看>>
AT指令中文手册
查看>>
module_param&amp;&amp;MODULE_PARM_DESC
查看>>