題目思路:
1.初步我用迴圈做的,發現超時
2.思路改進,觀察給出的樣例和他的輸出
1 3 2 4 5
排序後 1 2 3 4 5
要的結果 1 4 5
是不是有點感覺了呢
3.我就按照這個思路又複製了原來的陣列,將原來的陣列排序後,遍歷對比一下,找到位置相同的,count++
4.滿懷好奇,成功了幾個,其他全錯
5.回想一下,總覺得**不對啊,想了幾個測試例子
①例如:5 4 3 2 1
1 2 3 4 5
3??大家應該看出問題所在了,3不是我們要的結果啊!但他還是被輸出了
②再舉個例子
5 4 3 2 1 6 7 8 9
1 2 3 4 5 6 7 8 9
我們要的是 6 7 8 9 (3是不要的)
#include
#include
int cmp(const
void *a,const
void *b)
int main()
int b[t];//copy
for(int i=0;i<=t-1;i++)
int c[t];//儲存被選中的數
int count=0;
qsort(b,t,sizeof(b[0]),cmp);//quick sort
for(int i=0;i<=t-1;i++)
}printf("%d\n",count);//output number
int flag=0;
for(int i=0;i<=count-1;i++)
else
}printf("\n");
return
0;}
PAT 1045 快速排序 25
題目描述 著名的快速排序演算法裡有乙個經典的劃分過程 我們通常採用某種方法取乙個元素作為主元,通過交換,把比主元小的元素放到它的左邊,比主元大的元素放到它的右邊。給定劃分後的n個互不相同的正整數的排列,請問有多少個元素可能是劃分前選取的主元?例如給定n 5,排列是1 3 2 4 5。則 1的左邊沒有...
PAT 1045 快速排序
著名的快速排序演算法裡有乙個經典的劃分過程 我們通常採用某種方法取乙個元素作為主元,通過交換,把比主元小的元素放到它的左邊,比主元大的元素放到它的右邊。給定劃分後的n個互不相同的正整數的排列,請問有多少個元素可能是劃分前選取的主元?例如給定n 5,排列是1 3 2 4 5。則 1的左邊沒有元素,右邊...
PAT 1045 快速排序
1045 快速排序 25 分 著名的快速排序演算法裡有乙個經典的劃分過程 我們通常採用某種方法取乙個元素作為主元,通過交換,把比主元小的元素放到它的左邊,比主元大的元素放到它的右邊。給定劃分後的 n 個互不相同的正整數的排列,請問有多少個元素可能是劃分前選取的主元?例如給定 n 5 n 5 n 5,...