手写快速排序
2026-06-06 13:04:29
发布于:浙江
1阅读
0回复
0点赞
首先,快速排序:
x=a[0]
for{
if i<x left.append(i)
else right.append(i)
}
sort(left)
sort(right)
return left+{x}+right
然后,代码:
是不是像极了std::sort
#include<bits/stdc++.h>
void sort(int* begin,int* end){
if(end-begin<2) return ;
else{
int x=*begin;
std::vector<int> left={},right={};
for(auto i=begin+1;i!=end;i++){
if(*i<x) left.push_back(*i);
else right.push_back(*i);
}
std::vector<int> arr={};
sort(left.begin(),left.end());
sort(right.begin(),right.end());
arr.insert(arr.end(),left.begin(),left.end());
arr.push_back(x);
arr.insert(arr.end(),right.begin(),right.end());
}
}
int main(){
int n;
std::cin>>n;
std::vector<int> a(n);
for(auto&_:a) std::cin>>_;
sort(a.begin(),a.end());
for(auto _:a) std::cout<<_<<' ';
return 0;
}
这里空空如也







有帮助,赞一个