WA #1 #2 #3 普通快排 求助
查看原帖
WA #1 #2 #3 普通快排 求助
232887
BlueSu楼主2020/12/31 17:48

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 ) ;
    }
}
2020/12/31 17:48
加载中...