c的stl的sort函式是什麼排序,快速排序嗎

2021-03-04 02:35:10 字數 1678 閱讀 4557

1樓:匿名使用者

不是簡單的快排

stl的sort()演算法,資料量大時採用quick sort,分段遞迴排序,一旦分段後的資料量專小於某個門檻,為避屬免quick sort的遞迴呼叫帶來過大的額外負荷,就改用insertion sort。如果遞迴層次過深,還會改用heap sort。

2樓:匿名使用者

stl的sort()演算法,抄

資料量大時採用quick sort,分段遞迴排序,一旦分段後的資料量小於某個門檻,為避免quick sort的遞迴呼叫帶來過大的額外負荷,就改用insertion sort。如果遞迴層次過深,還會改用heap sort。

3樓:匿名使用者

sort()大部分以快排為基礎,加了hou多的優化,不手寫的快排還快得多(大佬們除外)。

4樓:匿名使用者

一般是快速排序。具體看stl的實現。

呼叫c++庫函式快速排序

5樓:匿名使用者

使用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()

6樓:匿名使用者

排序方法小結:

方法比較

綜合比較各種內部排序方法,其效能如下入所示:

方法 平均時間 最壞情況 輔助空間 穩定性 特點插入排序 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,記錄本身的大小,關鍵字的分佈情況,對排序穩定性的要求和語言工具的條件等。

7樓:匿名使用者

你指的是不是stl呀,

qsort

#include

8樓:匿名使用者

樓上說錯了吧 那是c 中的 c++中是sort函式!

sort函式的用法,Calgorithm裡的sort函式怎麼用

你說matlab嗎?bai 裡面有個引數,可以du用 sort a,ascend 升序 zhisort a,descend 降序 a為向量或dao陣列.也可以這樣回 先對答a求相反數,成 a,然後升序,然後再求相反數.這只是很簡單的數學技巧 在程式設計時相當有用 如果你是c語言,我記得沒有函式.你可...

mul函式的具體用法sort函式的具體用法?

mul指令是乘法指令。使用mul做乘法的時候 1 兩個相乘的數 兩個相乘的數,要麼都是8位,要麼都是16位。如果是8位,一個預設放在al中,另外一個存放在8為暫存器或位元組記憶體單元中 如果是16位,一個預設在ax中,另外一個放在16為暫存器或記憶體暫存器字單元中。2 結果 如果是8位乘法,結果預設...

函式宣告和函式定義的關係是什麼,C 中,函式的宣告與函式的定義有什麼區別?

函式先宣告才可以被呼叫,如同變數先宣告後使用。函式的宣告也可以和函式定義分開。一個函式只可以定義一次,但是可以宣告多次。函式定義 是指對函式功能的確立,包括指定函式名,函式值型別 形參型別 函式體等,它是一個完整的 獨立的函式單位。而 函式宣告 的作用則是把函式的名字 函式型別以及形參型別 個數和順...