相关题目:
快速排序https://www.acwing.com/problem/content/787/https://www.acwing.com/problem/content/787/
解题思路:
(我在b站上面找到了一个比较好的讲解视频,主要是运用到了填坑法)
轻松搞定十大经典排序算法(冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序、堆排序、计数排序、桶排序和基数排序)
相关代码:
(代码我已在本视频的基础上进行了优化)
#include<iostream>
using namespace std;
void sort1(int a[],int left,int right){
if(left>=right){
return;
}
int l=left;
int r=right;
int temp=a[left];
while(l<r){
//从右边开始
while(l<r&&a[r]>=temp){
r--;
}
if(l<r){
a[l++]=a[r];
}
while(l<r&&a[r]<temp){
l++;
}
if(l<r){
a[r--]=a[l];
}
}
a[l]=temp;
sort1(a,left,l-1);
sort1(a,l+1,right);
}
int main(){
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
sort1(a,0,n-1);
for(int i=0;i<n;i++){
cout<<a[i]<<" ";
}
return 0;
}