---
title: "二分查找与快速排序"
description: "快排之后查找"
canonical_url: "https://yangqiuyi.com/blog/suan-fa/er-fen-cha-zhao-yu-kuai-su-pai-xu"
---

> Index of every page on this site: [llms.txt](https://yangqiuyi.com/llms.txt)

快排之后查找

## 需求

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

## 分析

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

## Code

```cpp
#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;
}
```

## Sitemap

See the full [sitemap](https://yangqiuyi.com/sitemap.md) for all pages.
