三分搜索
三分搜索——分治算法
三分搜索算法的做法是:它将待查元素x与n/3处的元素比较,然后将x与2n/3处的元素进行比较。比较的结果或者找到x,或者将搜索范围缩小到原来的n/3.
(1)编写C++程序实现算法;
(2)分析算法的时间复杂度。
#include<iostream>
using namespace std;
class SortableList {
private:
int l[6] = { 1,2,3,4,5,6 };
int n;
public:
int TSearch(int x, int left, int right) {
if (left <= right)
{
int m1 = left + (right-left) / 3;
int m2 =left+ 2 * (right - left) / 3;
if (x == l[m1]) return m1;
if (x == l[m2]) return m2;
if (x < l[m1]) return TSearch(x, left, m1 - 1);
if (x > l[m2]) return TSearch(x, m2 + 1, right);
else return TSearch(x, m1 + 1, m2);
}
return -1;
}
void init()
{
cout << "顺序表为:";
for (int i = 0; i < 6; i++)
{
cout << l[i];
}
cout << endl;
}
};
算法时间复杂度为:O(log3n)

2284

被折叠的 条评论
为什么被折叠?



