1樓:匿名使用者
使用c++標準庫的快速排序函式
c++的標準庫stdlib.h中提供了快速排序函式。
請在使用前加入對stdlib.h的引用:#include 或 #include
qsort(void* base, size_t num, size_t width, int(*)***pare(const void* elem1, const void* elem2))
參數列*base: 待排序的元素(陣列,下標0起)。
num: 元素的數量。
width: 每個元素的記憶體空間大小(以位元組為單位)。可用sizeof()測得。
int(*)***pare: 指向一個比較函式。*elem1 *elem2: 指向待比較的資料。
比較函式的返回值
返回值是int型別,確定elem1與elem2的相對位置。
elem1在elem2右側返回正數,elem1在elem2左側返回負數。
控制返回值可以確定升序/降序。
一個升序排序的例程:
int ***pare(const void *elem1, const void *elem2)
int main()
2樓:匿名使用者
排序方法小結:
方法比較
綜合比較各種內部排序方法,其效能如下入所示:
方法 平均時間 最壞情況 輔助空間 穩定性 特點插入排序 o(n2) o(n2) o(1) √ n<30常用希爾排序 o(n1.2) o(n1.4) o(1) × 不常用起泡排序 o(n2) o(n2) o(1) √ 初學快速排序 o(nlnn) o(n2) o(n) × 常用,易惡化選擇排序 o(n2) o(n2) o(1) √ 初學歸併排序 o(nlog2n)o(nlog2n) o(n) √ 佔空間多,用於外部排序
可以看出,因為各種排序方法個有優缺點,因此不同情況下可以選擇不同方法,通常要考慮的因素右:待排
序記錄的個數n,記錄本身的大小,關鍵字的分佈情況,對排序穩定性的要求和語言工具的條件等。
3樓:匿名使用者
你指的是不是stl呀,
qsort
#include
4樓:匿名使用者
樓上說錯了吧 那是c 中的 c++中是sort函式!
c++ 的stl的sort()函式是什麼排序,快速排序嗎?
5樓:匿名使用者
不是簡單的快排
stl的sort()演算法,資料量大時採用quick sort,分段遞迴排序,一旦分段後的資料量專小於某個門檻,為避屬免quick sort的遞迴呼叫帶來過大的額外負荷,就改用insertion sort。如果遞迴層次過深,還會改用heap sort。
6樓:匿名使用者
stl的sort()演算法,抄
資料量大時採用quick sort,分段遞迴排序,一旦分段後的資料量小於某個門檻,為避免quick sort的遞迴呼叫帶來過大的額外負荷,就改用insertion sort。如果遞迴層次過深,還會改用heap sort。
7樓:匿名使用者
sort()大部分以快排為基礎,加了hou多的優化,不手寫的快排還快得多(大佬們除外)。
8樓:匿名使用者
一般是快速排序。具體看stl的實現。
c語言switchcase語句中呼叫函式求改錯十萬火急
include void main c語言中,如何在switch case後面呼叫函式,一共5個case,都要用函式的呼叫 include void test1 void test2 void test3 void test4 void test5 int main return 0 c語言中,怎樣...
C 呼叫特定建構函式的問題
其實這個問題可以利用一個專門類來解決,解決四路同上面老兄相同。下面是例子。比如class a a class b b class c static b create type3 a,type4 b,type5 c 每次要建立新類時,就呼叫 c create a,b c create a,b,c 還可...
c語言求a a a a a aa n個a 之和 函式呼叫。我這個哪兒錯了
printf su d n su f su是int型別,要用 d輸出。需要說明的是,你這個因為都是int型別,因此a和n的取值範圍很小,稍微大一點的數,就會造成資料溢位。c語言程式設計題 求s a aa aaa aaa a 有n個a a,n都由鍵盤輸入。請問各位哪 找不到哪錯了,我編了一個 和你的不...