#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;
}
【顺序查找表】 包含顺序查找和二分查找,顺手加入了快排
最新推荐文章于 2021-11-20 20:18:55 发布