本题先用一个快速排序然后
查找对比即可
#include<iostream>
using namespace std;
//交换
void swap(int list[], int left, int right) {
int tamp;
tamp = list[left];
list[left] = list[right];
list[right] = tamp;
}
//求分割点
int qiupoint(int list[], int left, int right) {
int frist = list[left];
while (left < right) {
while (left < right&&list[right]>=frist) {
right--;
}
swap(list, left, right);
while (left < right&&list[left]<=frist) {
left++;
}
swap(list, left, right);
}
return left;
}
//快速排序法
void quickpx(int list[], int left, int right) {
if (left < right) {
//分割点
int point = qiupoint(list, left, right);
//递归左调用
quickpx(list, left, point - 1);
//递归右调用
quickpx(list, point + 1, right);
}
}
int main() {
int n,q;
int h=0;
while(cin >> n>>q){
if(n==0&&q==0){
return 0;
}
h++;
int list[10000];
for(int i=0;i<n;++i){
cin>>list[i];
}
int a[10000];
for(int i=0;i<q;++i){
cin>>a[i];
}
quickpx(list,0 , n-1 );
cout<<"CASE# "<<h<<":"<<endl;
for(int i=0;i<q;++i){
int c=0;
for(int j=0;j<n;++j){
if(a[i]==list[j]){
c=1;
cout<<a[i]<<" found at "<<j+1<<endl;
break;
}
}
if(c==0){
cout<<a[i]<<" not found"<<endl;
}
}
}
return 0;
}