RT,调了半天看不出哪里有问题,请大佬相助。
代码不长,直接贴:
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <climits>
#include <queue>
using namespace std;
int n , a[10000000 + 5] ;
inline void quickSort ( int leftn , int rightn ) ;
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] ) ;
}
return 0 ;
}
inline void quickSort ( int leftn , int rightn ) {
int mid = ( leftn + rightn ) >> 1 ;
int i = leftn , j = rightn ;
// for ( int i = 1 ; i <= n ; i++ ) {
// cout << a[i] << " " ;
// }
// cout << endl ;
do {
while ( a[i] < a[mid] ) {
i++ ;
}
while ( a[j] > a[mid] ) {
j-- ;
}
if ( i <= j ) {
swap ( a[i] , a[j] ) ;
i++ , j-- ;
}
} while ( i <= j ) ;
if ( leftn < j ) {
quickSort ( leftn , j ) ;
}
if ( i < rightn ) {
quickSort ( i , rightn ) ;
}
}