秋逸

快排之后查找

需求

输入一个无序数组,以及一个需要查找的值 输出找没找到

分析

二分查找非常经典,但需要先给数组排序,我使用的是快速排序

Code

#include <bits/stdc++.h>

using namespace std;

//快速排序
void qsort(int a[],int le,int ri){
    int mid = a[(le+ri)/2];
    int i=le,j=ri;
    while(i<=j){
        while(a[i]<mid) i++;
        while(a[j]>mid) j--;
        if(i<=j){
            swap(a[i],a[j]);
            i++;
            j--;
        }
    }
    if(le<j) qsort(a,le,j);
    if(ri>i) qsort(a,i,ri);
}

//二分查找
bool binaryFind(int a[],int need,int len){
    bool res=false;
    int le=0,ri=len;
    int mid;
    while(le<=ri){
        mid=a[(le+ri)/2];
        if(need>mid) le=(le+ri)/2+1;
        else if(need<mid) ri=(le+ri)/2-1;
        else{
            res=true;
            break;
        }
    }
    return res;
}

int main(){
    int n,a[10005];
    memset(a,0,sizeof(a));
    cout<<">";
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    qsort(a,0,n-1);
    int need;
    cin>>need;
    binaryFind(a,need,n-1)?cout<<"found":cout<<"not exits";
    return 0;
}
二分查找与快速排序
: 杨秋逸
https://yangqiuyi.com/blog/算法/二分查找与快速排序/
© 2025 杨秋逸 . All rights reserved.