资源简介
小算法,感觉还是可以的,对于初学算法的朋友应该有用的,喜欢的朋友顶一下
代码片段和文件信息
#include
using namespace std;
#define N 7
class Jobtype
{
public:
int key;
int index;
public:
void h(int v1int v2)
{
key=v1;
index=v2;
}
};
//排序
void Swap(Jobtype *aint iint j)
{
Jobtype temp;
temp=a[i];a[i]=a[j];a[j]=temp;
}
int Partition(Jobtype *aint pint r)
{
int i=pj=r+1;
Jobtype x;
x=a[p];
while(true)
{
while(a[++i].key while(a[--j].key>x.key);
if(i>=j)
break;
Swap(aij);
}
a[p]=a[j];
a[j]=x;
return j;
}
void QuickSort(Jobtype a[]int pint r)
{
if(p {
int q=Partition(apr);
QuickSort(apq-1);
QuickSort(aq+1r);
}
}
//搜索x
int BinarySearch(Jobtype a[]int & xint n)
{
int left=1;
int right=n;
while(left<=right)
{
int middle=(left+right)/2;
if(x==a[middle].key)
return middle;
if(x>a[middle].key)
left=middle+1;
else
right=middle-1;
}
return -1;
}
void main()
{
Jobtype *a=new Jobtype[N];
int nxkey;
cout<<“输入数组长度:“;
cin>>n;
cout< cin>>x;
cout<<“输入数组元素值:“< for(int i=1;i<=n;i++)
{
cout<<“a[“<“;
cin>>key;
a[i].h(keyi);
}
//数组元素785491
QuickSort(a1n);
int k;
k=BinarySearch(axn);
if(k==-1)
cout<<“没有x值。“;
else
{
cout<<“比待搜索值x小的最大值位置:“;
cout< cout<<“比待搜索值x大的最小值位置:“;
cout< }
cout< }
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1472 2008-06-08 09:10 二分搜索.cpp
----------- --------- ---------- ----- ----
1472 1
- 上一篇:atmega64bootload
- 下一篇:数字电路课程设计—交通灯
评论
共有 条评论