2019-05-21 P1177

題目鏈接:https://www.luogu.org/problemnew/show/P1177
參考程序:

#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
const int maxn=100000+10;
int A[maxn],n;
/*
void quickSort(int L,int R){
    int i=L,j=R;
    while(i<=j){
        int mid=(i+j)/2;
        while(A[i]<A[mid]) i++;
        while(A[j]>=A[mid]) j--;
        if(i<=j){
            swap(A[i++],A[j--]);
        }
    }
    if(L<j) quickSort(L,j);
    if(i<R) quickSort(i,R);
}
*/
void quickSort(int L,int R)
{
    int mid = A[(L+R)/2];
    int i=L,j=R;
    while(i<=j)
    {
        while(A[i]<mid) i++;
        while(A[j]>mid) j--;
        if(i<=j) swap(A[i++],A[j--]);
    }
    if(L<j) quickSort(L,j);
    if(i<R) quickSort(i,R);
}
int main(void){
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++) scanf("%d",&A[i]);
    quickSort(1,n); 
    for(int i=1;i<=n;i++){
        if(i!=n) printf("%d ",A[i]);
        else printf("%d\n",A[i]);
    }
    return 0;
}

這里注釋的地方細(xì)節(jié)的地方一定出了錯(cuò)誤,但是不知道哪里錯(cuò)了錯(cuò)誤?檢查一下?
這里的mid是作為一個(gè)中間值,把[L,R]中的數(shù)據(jù)分成兩個(gè)部分,自己處理的時(shí)候,每一次都修改了mid的值,這是一個(gè)非常低級(jí)的錯(cuò)誤。



這是修改之后的函數(shù),但是還是有錯(cuò)誤的!??!
再看一眼正確的方法:


這里有錯(cuò)誤


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容