数组简单模拟一下基本思想
#include <cstdio> #include <cstring> #include <iostream> using namespace std ; int arr[100] ; int n ; void qsort(int left,int right) { if(left>right) return ; int temp = arr[left] ; int i = left ; int j = right ; while(i != j) { while(arr[j]>=temp && i<j) j-- ; while(arr[i]<=temp && i<j) i++ ; if(i<j) { int change = i ; i = j ; j = change ; } } //以下两行代码将基准归位 arr[left] = arr[i] ; arr[i] = temp ; //下面开始递归调用 qsort(left,i-1) ; // 开始排序左半部分 qsort(i+1,right) ; //开始排序右半部分 } int main() { int n ; while(scanf("%d",&n)!=EOF) { memset(arr,0,sizeof(arr)) ; printf("输入这%d个数 ",n) ; for(int i = 0 ;i<n ;i++) scanf("%d",&arr[i]) ; qsort(0,n-1) ; for(int i = 0 ; i<n ;i++) { printf("%d ",arr[i]) ; } } return 0 ; }