題目鏈接: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ò)誤
