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

時間 2021-07-12 17:34:26

1樓:藍色**

你如果要按照x的大小順序牌還是y 的大小順序牌,。

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

2樓:

vc6 幫助裡的對qsort 裡compare函式指標引數的要求:

compare((void*)elem1,(void*)elem2);

the routine must compare the elements, then return one of the following

values:

return value description

< 0 elem1 less than elem2

0 elem1 equivalent to elem2

> 0 elem1 greater than elem2

1)int less_x(const void *a, const void *b)

qsort(point, sizeof(point), n, less_x);

2)int less_y( cons point *a, cons point *b)

qsort(point, sizeof(point), n, (int (*)(const void *, const void *))less_x);

3)int less_xy( cons point *a, cons point *b)

qsort(point, sizeof(point), n, (int (*)(const void *, const void *))less_xy);

3樓:她是我的小太陽

#include

#include

using namespace std;

static const int n = 3;

struct point

;int comp(const void *a, const void *b)

return true;

}int main()

qsort(point, n, sizeof(point), comp);

for(int i=0; i

c++中sort怎麼對結構體陣列中的字串陣列排序?

4樓:

//我寫的一個簡單的使用c++ sort的例子,供你參考#include

#include

typedef struct _testsortarraytestsortarray;

int main()

std::cout << "previous string is:" << tsa._arrstr << std::endl;

std::sort(tsa._arrstr,tsa._arrstr + 15);

std::cout << "after sort,string is:" << tsa._arrstr << std::endl;

system("pause");

return 0;}

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

5樓:菜刀撒

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

6樓:匿名使用者

//假設類名為a,比較函式可以這樣寫

bool cmp(a m,a n)

使用的時候是這樣

a array[size];

....//各種賦值修改操作

sort(array,array+size,cmp);//排序

7樓:匿名使用者

class array

s[100]

//按照result的值從小到大將類排序

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

qsort(s,100,sizeof(s[0]),cmp);

c語言結構體中的陣列怎麼賦值,C語言,結構體中的陣列怎麼賦值,?

念憶 intmain void printf d,s n bao.id,bao.name 輸出是4224528,空 應該是null structstudentsbao 可以。第一種賦值方法 strcpy bao.name,bao 可以,printf d,s n bao.id,bao.name bao...

c 繼承後的記憶體分配問題,c 中給結構體分配動態記憶體的問題 用new嗎 怎麼用

柳生十連兵 不能訪問是不能直接通過派生類物件直接呼叫,但是可以通過派生類的成員函式呼叫基類的公有函式來訪問基類的私有屬性.難道編譯器會分配一塊記憶體放著不管造成記憶體洩漏? 墨夷欣笑 因為在派生類中通過可以定義新函式成員來訪問這些記憶體 間接訪問 比如呼叫基類派生下來的成員函式 所以這些記憶體是可以...

c語言標頭檔案中定義結構體的問題,C語言標頭檔案中定義結構體的問題

c語言程式設計中,為防止標頭檔案在同一編譯單元被重複引用,常引入 ifndef巨集來進行保護,如 標頭檔案my head.h ifndef my head h 如果沒有定義巨集 my head h define my head h 則,定義該巨集名 以下是被保護的 區 進行相應的全域性變數和結構體型...