生活随笔
收集整理的這篇文章主要介紹了
C++——《算法分析》实验壹——二分搜索算法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
實驗?zāi)康?#xff1a;
1.理解分治算法的概念和基本要素;
2.理解遞歸的概念;
3.掌握設(shè)計有效算法的分治策略;
4.通過二分搜索技術(shù)學(xué)習(xí)分治策略設(shè)計技巧;
實驗原理:
二分搜索算法也稱為折半查找法,它充分利用了元素間的次序關(guān)系,采用分治策略,可在最壞的情況下用O(log n)完成搜索任務(wù)。
實驗內(nèi)容:
1.使用二分搜索算法查找任意N個有序數(shù)列中的指定元素。
2.通過上機(jī)實驗進(jìn)行算法實現(xiàn)。
3.保存和打印出程序的運(yùn)行結(jié)果,并結(jié)合程序進(jìn)行分析,上交實驗報告。
4.至少使用兩種方法進(jìn)行編程。
實驗代碼:
#include <iostream>
using namespace std
;
int middlesortd(int num
[], int n
, int low
, int high
)
{if (low
> high
) return -1;int middle
= low
+ (high
- low
) / 2;if (num
[middle
] == n
) return middle
;else if (n
< num
[middle
]) return middlesortd(num
, n
, low
, middle
- 1);else return middlesortd(num
, n
, middle
+ 1, high
);
}int middlesort(int num
[], int n
, int low
, int high
)
{while (low
<= high
) {int middle
= low
+ (high
- low
) / 2;if (num
[middle
] == n
) return middle
;else if (n
< num
[middle
]) high
= middle
- 1;else low
= middle
+ 1;}return -1;
}int main()
{int n
, m
, l
,j
;int s
[100];cout
<< "請輸入有序數(shù)組個數(shù):";cin
>> n
;cout
<< "請輸入有序數(shù)組:";for (int i
= 0; i
< n
; i
++) cin
>> s
[i
];cout
<< "請輸入你要查找的數(shù):";cin
>> l
;cout
<< "請選擇查找方式:1、直接查找 2、遞歸查找";cin
>> j
;if (j
== 1) {m
= middlesort(s
, l
, 0, n
- 1);if (m
== -1) cout
<< "直接查找:很抱歉,找不到這個數(shù)!";else cout
<< "直接查找:找到了!是數(shù)組中第" << m
+ 1 << "個數(shù)";} else if (j
== 2) {m
= middlesortd(s
, l
, 0, n
- 1);if (m
== -1) cout
<< "遞歸查找:很抱歉,找不到這個數(shù)!";else cout
<< "遞歸查找:找到了!是數(shù)組中第" << m
+ 1 << "個數(shù)";}
}
實驗結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的C++——《算法分析》实验壹——二分搜索算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。