C 中sort是如何實現的,C 中sort 怎麼用

2021-07-12 17:33:47 字數 5780 閱讀 9937

1樓:

一般是使用快排分割陣列,當陣列元素個數小於一定值時就使用插排,具體的實現需要看原始碼。

2樓:匿名使用者

有時透過視窗,竟能聽到

極其專業,

不僅僅是讓他的朋友滿意

二月裡到處一片白,

她的臉髒兮兮,並不漂亮,

讓它怯的的的綻的哈哈

3樓:匿名使用者

// 插入排序實現:

void sortinsert::insertsort(vector::iterator begin, vector::iterator end)}}

// 氣泡排序實現:

#include

template

void bubblesort(iterator first, iterator last)

template

void bubblesort(iterator first, iterator last, strictweakordering compare)

// 選擇

#include // for: std::iter_swap, std::min_element

template

void selection_sort(iterator begin, iterator end)

}// 快速

#include

#include

#include

template< typename bidirectionaliterator, typename compare >

void quick_sort( bidirectionaliterator first, bidirectionaliterator last, compare cmp ) else

}--left;

std::iter_swap( pivot, left );

quick_sort( first, left, cmp );

quick_sort( right, last, cmp );}}

template< typename bidirectionaliterator >

inline void quick_sort( bidirectionaliterator first, bidirectionaliterator last )

**********=算啦,你還是去這裡(下面是連結)看看吧,共同學習哦!!

c++中sort()怎麼用

4樓:匿名使用者

#include

void sort( iterator start, iterator end );

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

第一bai個只需要傳

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

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

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

5樓:匿名使用者

nlogn,快排是最快的了

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

6樓:四舍**入

sort函式用法例如:

int cmp( const int &a, const int &b )

sort(a,a+n,cmp);

是對陣列a降序排序

又如:int cmp( const point &a, const point &b )

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),執行效率較高。

7樓:匿名使用者

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)

例如:int cmp( const int &a, const int &b )

sort(a,a+n,cmp);

是對陣列a降序排序

又如:int cmp( const point &a, const point &b )

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型陣列進行快速排序(非降序排列)

p=(int*)bsearch(&a,data,n,sizeof(int),cmp);

8樓:匿名使用者

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

#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);

9樓:貿金蘭嬴橋

void

sort(

iterator

start,

iterator

end);

void

sort(

iterator

start,

iterator

end,

strictweakordering

cmp);

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

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

c++中sort()排序如何使用?

10樓:手機使用者

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

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

intro排序複雜度始終為nlogn。

11樓:蝸牛爬阿爬

#include

#include

using namespace std;

main()

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

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

12樓:亥朝辛自

#include

void

sort(

iterator

start,

iterator

end);

void

sort(

iterator

start,

iterator

end,

strictweakordering

cmp);

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

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

C 中引用和多型性的實現,什麼是多型性,C 中是如何實現多型的

由於dog是animal的子類,而animal的gettype 和 getvoice 都是虛函式,而實現了多型性,而void type animal a 函式 中的引數是animal的引用物件,由於animal是dog的父類,而父類的物件可以接收子類的物件,所以當呼叫type d 這個函式時,typ...

c 中析構函式可以實現什麼,c 中的虛擬析構函式有什麼作用?

析構函式名與類名相同,只是在函式名前面加乙個位取反符 例如 stud 以區別於建構函式。它不能帶任何引數,也沒有返回值 包括void型別 只能有乙個析構函式,不能過載。如果使用者沒有編寫析構函式,編譯系統會自動生成乙個預設的析構函式 即使自定義了析構函式,編譯器也總是會為我們合成乙個析構函式,並且如...

用c如何實現輸入資料在資料庫中顯示

sqlconnection con new sqlconnection data source initial catalog zjsjk integrated security true uid sa pwd 198425 連線語句 sql mand cmd new sql mand insert...