1樓:菜刀撒
使用sort排序
結構體網上例子很多的 就是先寫一個排序函式
然後讓sort按照你的函式排序就行了
stl 裡面有個 sort 函式,可以直接對陣列排序,複雜度為 n*log2(n) 。使用這個函式,需要包含標頭檔案。
這個函式可以傳兩個引數或三個引數。第一個引數是要排序的區間首地址,第二個引數是區間尾地址的下一地址。也就是說,排序的區間是 [a,b) 。
簡單來說,有一個陣列 int a[100] ,要對從 a[0] 到 a[99] 的元素進行排序,只要寫 sort(a,a+100) 就行了,預設的排序方式是升序。
拿我出的「 ac 的策略」這題來說,需要對陣列 t 的第 0 到 len-1 的元素排序,就寫 sort(t,t+len);
對向量 v 排序也差不多, sort(v.begin(),v.end());
如果是沒有定義小於運算的資料型別,或者想改變排序的順序,就要用到第三引數——比較函式。比較函式是一個自己定義的函式,返回值是 bool 型,它規定了什麼樣的關係才是「小於」。想把剛才的整數陣列按降序排列,可以先定義一個比較函式 cmp
bool cmp(int a,int b)
排序的時候就寫 sort(a,a+100,cmp);
假設自己定義了一個結構體 node
struct node
有一個 node 型別的陣列 node arr[100] ,想對它進行排序:先按 a 值升序排列,如果 a 值相同,再按 b 值降序排列,如果 b 還相同,就按 c 降序排列。就可以寫這樣一個比較函式:
以下是**片段:
bool cmp(node x,node y)
排序時寫 sort(a,a+100,cmp);
2樓:匿名使用者
//假設類名為a,比較函式可以這樣寫
bool cmp(a m,a n)
使用的時候是這樣
a array[size];
....//各種賦值修改操作
sort(array,array+size,cmp);//排序
3樓:匿名使用者
class array
s[100]
//按照result的值從小到大將類排序
int cmp( const void *a ,const void *b)
qsort(s,100,sizeof(s[0]),cmp);
c語言/c++中 sort函式與qsort函式怎麼使用?sort(x,y,cmp)其中cmp的作用是什麼?怎麼編寫cmp?
4樓:匿名使用者
cmp 就是比較函式,用於確定兩個物件的大小關係
這是需要你自己定義的
c++sort和qsort排序的時間複雜度分別為多少?
5樓:匿名使用者
c中的qsort()採用的是快排演算法,c++的sort()則是改進的快排演算法。兩者的時間複雜度都是nlogn,但是實際應用中,sort()一般要快些,建議使用sort()。
6樓:匿名使用者
o( n*log2(n) )
(C如何建立n個類的物件
迴圈,每次new 1個,迴圈 n 次,或者new一個陣列,下標為n class pc new class 10 建立一個陣列每個成員都是class型別,共10個成員。引用時候這樣 pc 0 pc 1 c 是在c語言的基礎上開發的一種面向宇宙程式語言,應用廣泛。c 支援多種程式設計正規化 物件導向程式...
關於C試程式設計統計出類在程式中,例項化的物件個數謝謝
class allmembers allmembers const allmembers 拷貝建構函式 allmembers 解構函式static size t number 返回例項化物件版個數private static size t num 物件計權數器 c 裡面能不能編出程式,實現根據需要的...
c 類和物件的定義,區別,關係,概念
小心理解下面這段話,一定要理解。我不貼 的。例如我說 車 的時候,你想到了什麼?是不是車子都可以開,都有輪子。那麼你頭腦中自然就想起了一個車子類 類是屬性的集合,車子的屬性 可以開,有重量,大小,顏色 但是我說 你看,那輛車多漂亮!當你順著我指著的方向看去,這就是一個實際存在的物件 具體的車子。綜上...