請問,C 中的類的物件組成的動態陣列怎麼用sort()或qsort()排序

2021-03-21 16:15:05 字數 1609 閱讀 9187

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 類和物件的定義,區別,關係,概念

小心理解下面這段話,一定要理解。我不貼 的。例如我說 車 的時候,你想到了什麼?是不是車子都可以開,都有輪子。那麼你頭腦中自然就想起了一個車子類 類是屬性的集合,車子的屬性 可以開,有重量,大小,顏色 但是我說 你看,那輛車多漂亮!當你順著我指著的方向看去,這就是一個實際存在的物件 具體的車子。綜上...