c 中sort 排序如何使用

2021-07-12 17:32:43 字數 5912 閱讀 5300

1樓:手機使用者

sort是stl中的函式,如何使用要看你用的什麼容器。你要包陣列中的元素先匯入容器中,如vector,list等。然後象呼叫一般的類方法一樣使用。

sort()的實現方法要看你的stl的實現版本。用的是用快速排序,有的是用intro排序。快速排序的一般複雜度為nlogn,最差情況為n2。

intro排序複雜度始終為nlogn。

2樓:蝸牛爬阿爬

#include

#include

using namespace std;

main()

;//a的長度=待排資料個數+1

sort(a,a+10);//對[a,a+10)排序for(int i=0;i<10;++i) cout<

3樓:亥朝辛自

#include

void

sort(

iterator

start,

iterator

end);

void

sort(

iterator

start,

iterator

end,

strictweakordering

cmp);

第一個只需要傳遞你要排序的串(整形陣列等都行)的頭指標(陣列第一個元素的指標)與陣列最後元素的下一個位置,sort是一個模板哈

第二個前面兩個引數同第一,但第三個引數是傳遞一個你定義用於排序的函式(返回比較的大小值,如strcmp或自定義的都行),因為第一個用的是預設的哈

c++ sort()函式用法

4樓:匿名使用者

#include

void sort( iterator start, iterator end );

void sort( iterator start, iterator end, strictweakordering cmp );

c++中sort()怎麼用

5樓:匿名使用者

#include

void sort( iterator start, iterator end );

void sort( iterator start, iterator end, strictweakordering cmp );

第一bai個只需要傳

du遞你要排zhi序的串(整形陣列dao等都行)的頭指

內針(陣列第一個元素容的指標)與陣列最後元素的下一個位置,sort是一個模板哈

第二個前面兩個引數同第一,但第三個引數是傳遞一個你定義用於排序的函式(返回比較的大小值,如strcmp或自定義的都行),因為第一個用的是預設的哈

6樓:匿名使用者

nlogn,快排是最快的了

c++中排序函式sort用的是什麼方法排序

7樓:匿名使用者

stl的sort函式在資料量大時採用快排,分段遞迴排序,一旦分段後的資料小於某個值,就改用插入排序。如果遞迴層次過深,還會改用堆排序。這樣就結合了各類演算法的所有優點。

8樓:匿名使用者

void sort( iterator start, iterator end );

void sort( iterator start, iterator end, strictweakordering cmp );

第一個只需要傳遞你要排序的串(整形陣列等都行)的頭指標(陣列第一個元素的指標)與陣列最後元素的下一個位置

第二個前面兩個引數同第一,但第三個引數是傳遞一個你定義用於排序的函式(返回比較的大小值,如strcmp或自定義的都行),因為第一個用的是預設的哈

9樓:匿名使用者

標準庫裡面有qsort,也就是快速排序,而std::sort是一個改進版的qsort,更加細緻,對不同陣列大小採用不同方法排序。

c++ algorithm 裡的sort函式怎麼用

10樓:四舍**入

sort函式用法例如:

sort(a,a+n,cmp);

是對陣列a降序排序

又如

else

return 0;}

sort(a,a+n,cmp);

是先按x升序排序,若x值相等則按y升序排。

預設的sort函式是按升序排,sort(a,a+n); //兩個引數分別為待排序陣列的首地址和尾地址。

擴充套件資料:

sort函式語法

sort(start,end,cmp)

引數1、start表示要排序陣列的起始地址

2、end表示陣列結束地址的下一位

3、cmp用於規定排序的方法,可不填,預設升序

功能sort函式用於c++中,對給定區間所有元素進行排序,預設為升序,也可進行降序排序。

一般是直接對陣列進行排序,例如對陣列a[10]排序,sort(a,a+10),而sort函式的強大之處在可與cmp函式結合使用,即排序方法的選擇。

sort()函式是c++一種排序方法之一,相較氣泡排序和選擇排序所帶來的執行效率不高的問題,sort()函式使用的排序方法是類似於快速排序的方法,時間複雜度為n*log2(n),執行效率較高。

11樓:匿名使用者

msdn中的定義:

templatevoid sort(ranit first, ranit last); //--> 1)templatevoid sort(ranit first, ranit last, pred pr); //--> 2)

標頭檔案:

#include

using namespace std;

1.預設的sort函式是按升序排。對應於1)

sort(a,a+n); //兩個引數分別為待排序陣列的首地址和尾地址

2.可以自己寫一個cmp函式,按特定意圖進行排序。對應於2)

例如:

sort(a,a+n,cmp);

是對陣列a降序排序

又如

else

return 0;

}sort(a,a+n,cmp);

是先按x升序排序,若x值相等則按y升序排

與此類似的還有c中的qsort,以下同附上qsort的使用方法:

#include

格式 qsort(array_name,data_number,sizeof(data_type),compare_function_name) (void*)bsearch (pointer_to_key_word,array_name,find_number,

sizeof(data_type),compare_function_name)

e.g.

int cmp(const void*a,const void *b)

qsort(data,n,sizeof(int),cmp); // 對int型陣列進行快速排序(非降序排列)

12樓:匿名使用者

可以不填,如果不填就是從小到大排序。

#include

using namespace std;

#include

#include

int main(void)

for(int i = 0; i < n; i++)cin >> m[i];

sort(m, m + n);

for(int i = 0; i < n; i++)cout << m[i] << ends;//ends是空格return 0;

}如果填的話就是

從大到小排序:

#include

using namespace std;

#include

#include

bool cmp(int a,int b)int main(void)

for(int i = 0; i < n; i++)cin >> m[i];

sort(m, m + n, cmp);

for(int i = 0; i < n; i++)cout << m[i] << ends;//ends是空格return 0;

}說白了,第三個引數就是我們自己寫的一個函式,這個函式只要返回只為int型別就可以了並且有兩個引數就可以了,但是若真的想要做到排序,只要讓(從小到大)這個函式裡寫return ab;

/*cmp只是函式名稱,是可以隨便定義的。a和b的型別也不一定是int,可以是float、double、甚至你自己寫的結構體。但注意你比較的元素不再是a > b*/

int cmp(int a, int b)如有一個結構體陣列:

struct node

a[100];

那麼cmp函式應該這麼寫:

int cmp(struct node a, struct node b)

按照v的大小來從大到小排序只需要:

sort(a, a + 100, cmp);

13樓:貿金蘭嬴橋

void

sort(

iterator

start,

iterator

end);

void

sort(

iterator

start,

iterator

end,

strictweakordering

cmp);

第一個只需要傳遞你要排序的串(整形陣列等都行)的頭指標(陣列第一個元素的指標)與陣列最後元素的下一個位置

第二個前面兩個引數同第一,但第三個引數是傳遞一個你定義用於排序的函式(返回比較的大小值,如strcmp或自定義的都行),因為第一個用的是預設的哈

c++stl中的sort()函式 能對連結串列進行排序嗎?

14樓:匿名使用者

sort演算法的迭代器用的是隨機訪問迭代器,連結串列的不是,因此不能用該演算法,陣列和vector可以

樓上的英文就是這個意思:randomaccessiterator

15樓:匿名使用者

sort演算法的迭代器用的是隨機訪問迭代器(randomaccessiterator ),連結串列的不是,因此不能用該演算法,陣列和vector可以.

16樓:一高小鬼

如果,你建立的是個連結串列的類,sort()就可以直接用物件進行呼叫成員a.sort(),一般不用引數

c++ 的stl的sort()函式是什麼排序,快速排序嗎?

17樓:匿名使用者

不是簡單的快排

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

18樓:匿名使用者

stl的sort()演算法,抄

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

cqsort對結構體排序,C 中sort怎麼對結構體陣列中的字串陣列排序?

你如果要按照x的大小順序牌還是y 的大小順序牌,int comp const void a,const void b vc6 幫助裡的對qsort 裡compare函式指標引數的要求 compare void elem1,void elem2 the routine must compare the...

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

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

c中如何使用in傳遞sql語句引數

傻,不會變通,直接用select from table where id in a1,a2,a3.明白了嗎?也可以把id拆分出來,既然是id拆分出來以後全部轉成數字,再重新組合,就不用引數了,也不會被注入了。不可以,in使用引數時會強制轉換引數型別與條件欄位一致,不支援構造字串 如果欄位本身為var...