快排
数组简单模拟一下基本思想
#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",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 ;
}

浙公网安备 33010602011771号