您的位置:首页 > 其它

【顺序查找表】 包含顺序查找和二分查找,顺手加入了快排

2015-01-05 11:14 176 查看
#include <iostream>

using namespace std;

int a1[10]={1,3,5,7,8,2,6,4,9,0};
int a3[10]={0,1,2,3,4,5,6,7,8,9};
int size1=10;
int a2[9]={1,3,5,7,8,2,6,4,9};
int a4[9]={1,2,3,4,5,6,7,8,9};
int size2=9;

int seqSearch(int x,int a[],int size)
{
int i=0;
if (a[i]==x) return i;
a[i]=x;
for (i=size-1;a[i]!=x;i--);     //利用空间换取时间
if (i==0) return -1;
else return i;
}

//不重不漏是此类算法的关键 例如二分查找、快速排序
int binSearch(int x,int a[],int size)
{
int low=0;
int high=size-1;
while (low<=high)
{
if (a[(low+high)/2]>x)
high=(low+high)/2-1;
else if (a[(low+high)/2]<x)
low=(low+high)/2+1;
else
return (low+high)/2;
}
if (low>high) return -1;
}

void quickSort(int a[],int left,int right)
{
if (left>=right) return;
int low=left,high=right,key=a[low];
while (low<high)
{
while (low<high&&a[high]>key) high--;
a[low]=a[high];
while (low<high&&a[low]<key) low++;
a[high]=a[low];
}
a[low]=key;
quickSort(a,left,low-1);
quickSort(a,low+1,right);
}

int main()
{
quickSort(a2,0,size2-1);
cout<<binSearch(7,a2,size2)<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: