2016年藍橋杯C/C++組省賽第四題--快速排序
快速排序
排序在各種場合經常被用到。
快速排序是十分常用的高效率的演算法。
其思想是:先選一個“標尺”,
用它把整個佇列過一遍篩子,
以保證:其左邊的元素都不大於它,其右邊的元素都不小於它。
這樣,排序問題就被分割為兩個子區間。
再分別對子區間排序就可以了。
下面的程式碼是一種實現,請分析並填寫劃線部分缺少的程式碼。
#include <stdio.h>
void swap(int a[], int i, int j)
{
int t = a[i];
a[i] = a[j];
a[j] = t;
}
int partition(int a[], int p, int r)
{
int i = p;
int j = r + 1;
int x = a[p];
while(1){
while(i<r && a[++i]<x);
while(a[--j]>x);
if(i>=j) break;
swap(a,i,j);
}
______________________;
return j;
}
void quicksort(int a[], int p, int r)
{
if(p<r){
int q = partition(a,p,r);
quicksort(a,p,q-1);
quicksort(a,q+1,r);
}
}
int main()
{
int i;
int a[] = {5,13,6,24,2,8,19,27,6,12,1,17};
int N = 12;
quicksort(a, 0, N-1);
for(i=0; i<N; i++) printf("%d ", a[i]);
printf("\n");
return 0;
}
注意:只填寫缺少的內容,不要書寫任何題面已有程式碼或說明性文字。
答案是:swap(a,p,j);
相關文章
- 2016年藍橋杯C/C++組省賽第三題--湊算式C++
- 2016年藍橋杯C/C++組省賽第一題--煤球數目C++
- 2016年藍橋杯C/C++組省賽第二題--生日蠟燭C++
- 第十三屆藍橋杯省賽C/C++ B組C++
- 2016年省賽第七屆藍橋杯B組C/C++第九題解 交換瓶子C++
- 2013第四屆藍橋杯省賽C++B組【第六題:三部排序】C++排序
- 【藍橋杯考前突擊】第十屆藍橋杯省賽C/C++大學B組 試題 D 數的分解C++
- 第十五屆藍橋杯大賽軟體賽省賽 C/C++ 大學 A 組C++
- 2013年第四屆藍橋杯省賽試題及詳解(Java本科C組)Java
- 試題B:小球反彈(第十五屆藍橋杯省賽B組c/c++組)C++
- 歷屆藍橋杯省賽(C、C++)的答案(轉)C++
- 2020藍橋杯省賽B組C++(第二場)真題C++
- 第十四屆藍橋杯省賽C++ B組(個人經歷 + 題解)C++
- 藍橋杯__省賽__第七屆__C/C++__大學A組C++
- 藍橋杯__省賽__第八屆__C/C++__大學A組C++
- 藍橋杯__省賽__第九屆__C/C++__大學A組C++
- 2013第四屆藍橋杯省賽C++A組【第一題:高斯日記】C++
- 2016 藍橋杯省賽C語言B組 第六題 方格填數C語言
- 第十三屆藍橋杯省賽A組
- 2017省賽藍橋杯B組
- 2017第八屆藍橋杯C/C++ B組省賽第二題 秒解C++
- 第十五屆藍橋杯軟體賽省賽C/C++B 組題解C++
- 第九屆藍橋杯省賽C++A組 倍數問題(dfs)C++
- 第四屆藍橋杯C/C++本科B組第二道大題C++
- 2018藍橋杯省賽B組
- 2019年省賽第十屆藍橋杯B組C/C++試題H解 等差數列C++
- 2013藍橋杯題解c組C++C++
- 2015年藍橋杯六屆省賽大學B組真題
- 2018第九屆藍橋杯省賽C++B組【第四題:測試次數】C++
- 第十屆藍橋杯省賽C++B組 等差數列C++
- 第十五屆藍橋杯C++B組省賽總結C++
- 第六屆藍橋杯省賽CC++B組C++
- 2015年省賽第六屆藍橋杯B組C/C++第五題解 九陣列分數C++陣列
- 第七屆藍橋杯大賽個人賽省賽(軟體類)真題 C語言A組 1C語言
- 第十屆藍橋杯C++國賽B組部分題解(假題解)C++
- 藍橋杯javaB組備賽Java
- 2014年第五屆藍橋杯省賽試題及詳解(Java本科C組)Java
- 藍橋杯歷年(省賽)試題彙總及試題詳解