您的位置:首页 > 其它

几道笔试题的解法(二)

2010-03-31 20:48 197 查看
题目:给定数组A
,要求实现一个排序算法和一个二分查找算法的程序。
分析:本题主要考察排序和二分查找算法。

代码如下:

void Swap(int &a, int &b)
{
int temp = a;
a = b;
b = temp;
}

void BubbleSort(int *A, int Length)
{
int i = 0;
int j = 0;
int temp = 0;

for (; i < Length; i++)
{
for (j = i; j < Length; j++)
{
if (A[i] > A[j])
{
Swap(A[i], A[j]);
}
}
}
}

int BinarySearch(int *A, int len, int _num)
{
int Mid = 0;
int _start = 0;
int _end = len - 1;
int _found = 0;

BubbleSort(A, len);

while (_start <= _end)
{
Mid = (_start + _end) / 2;

if (_num < A[Mid]) //如果小于,就在前半部分找
{
_found++;
_end = Mid - 1;
}
else if (_num > A[Mid]) //如果大于,就在后半部分找
{
_found++;
_start = Mid + 1;
}
else //找到的情况
{
_found++;
std::cout << "The value " << _num << " is found!" << '/n';
std::cout << "Total compare:" << _found << '/n';
std::cout << "It's subitem is:" << Mid << '/n';
return Mid;
}
}
std::cout << "The search value " << _num << " is not found !" << '/n';
std::cout << "Total compare:" << _found << '/n';

return -1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: