acm做題過程中經常要用到排序,一般都選用快排,在此對快排做個總結
其中**用c表示
#include
#include
//必須包含該標頭檔案
struct 結構體型別名 //資料型別=「struct」+「空格」+「結構體型別名」
陣列名[陣列大小];
int 自定義函式名字(
const
void *a,
const
void *b)
qsort(陣列名,陣列大小,
sizeof(資料型別),自定義函式名字);
//呼叫快排(寫在呼叫的地方)
下面是一些具體的例子
#include
#include
intcmp(const
void *a,const
void *b)
qsort(p,n,
sizeof(
int),cmp);
//呼叫快排(其中p是int型陣列名,n是陣列長度)
同樣c++的stl庫中也提供了sort排序函式,可以直接拿來使用。在一些題目中,使用上述方法所導致的超時往往換成sort函式即可解決
①sort是乙個改進版的qsort. std::sort函式,實驗證明sort一般要快於qsort
②優於qsort的一些特點:對大陣列採取9項取樣,更完全的三路劃分演算法,更細緻的對不同陣列大小採用不同方法排序。
③sort是qsort的公升級版,如果能用sort盡量用sort,使用也比較簡單,不像qsort還得自己去寫 cmp 函式
**如下:
#include
#include
//必須包含該標頭檔案
using
namespace
std;
intmain
()
#include
#include
//必須包含該標頭檔案
#include
//必須包含該標頭檔案
using
namespace
std;
intmain
()
#include
#include
intcmp(const
void *a,const
void *b)
qsort(p,n,
sizeof(
int),cmp);
#include
#include
#include
struct
stu //將字串存到結構體中的q域
p[1005];
intcmp(const
void *a,const
void *b)
//結構體陣列p中,以其成員字串q為關鍵字,對p從小到大進行排序
qsort(p,n,
sizeof(struct stu),cmp);
//呼叫快排(其中p是struct stu型陣列名,n是陣列長度)
#include
#include
#include
struct
stu
p[1005];
intcmp(const
void *a,const
void *b)
//結構體陣列p中,以其成員字串q為關鍵字,對p從大到小進行排序
qsort(p,n,
sizeof(struct stu),cmp);
#include
#include
struct
stu
p[1005];
intcmp(const
void *a,const
void *b)
qsort(p,n,
sizeof(struct stu),cmp);
#include
#include
struct
stu
p[1005];
intcmp(const
void *a,const
void *b)
//結構體陣列p中,以其成員a為關鍵字,對p從大到小進行排序
qsort(p,n,
sizeof(struct stu),cmp);
STL庫中快排sort函式詳解
使用 include using namespace std 作用 排序 時間複雜度 n lg n 實現原理 sort並不是簡單的快速排序,它對普通的快速排序進行了優化,此外,它還結合了插入排序和推排序。系統會根據你的資料形式和資料量自動選擇合適的排序方法,這並不是說它每次排序只選擇一種方法,它是在...
VC庫中快排函式的詳解
author bakari date 2012.8.9 以前都是自己手動寫這個演算法,覺得也不是一件很麻煩的事,但現在寫的程式基本上都用得著快排,重新去寫這個演算法很沒有必要。直接使用vc庫中提供的qsort方便了很多,並且百試不爽。今天總結一下這個函式的強大之處。經典排序之快速排序 1 函式原型 ...
VC庫中快排函式的詳解
author bakari date 2012.8.9 以前都是自己手動寫這個演算法,覺得也不是一件很麻煩的事,但現在寫的程式基本上都用得著快排,重新去寫這個演算法很沒有必要。直接使用vc庫中提供的qsort方便了很多,並且百試不爽。今天總結一下這個函式的強大之處。經典排序之快速排序 1 函式原型 ...