分治法

算法理解

快排:

在区间 \([x,y]\) 中,任取一个 \(key\) 值,把小于 \(key\) 放左,大于反之,然后递归实现

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n;
int a[N];
void quicksort(int x,int y){
    if(x>=y)  return;
    int l=x,r=y,key=a[x];
    while(l<r){
        while(l<r&&a[r]>key)  r--;
        a[l]=a[r];
        while(l<r&&a[l]<=key)  l++;
        a[r]=a[l];
    }
    a[l]=key;
    quicksort(x,l-1);
    quicksort(l+1,y);
}
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
    }
    quicksort(1,n);
    for(int i=1;i<=n;i++){
        printf("%d ",a[i]);
    }
    printf("\n");
}

T1:

利用快排的思想,只不过

posted @ 2025-07-23 19:22  daydreamer_zcxnb  阅读(13)  评论(0)    收藏  举报