C 實現對結構體排序並用過載函式定義多種排序型別

2021-09-26 13:56:26 字數 1206 閱讀 7348

#define _crt_secure_no_warnings

#include

#include

using namespace std;

struct poker

;enum;

void inputpoker(poker * pk)

getchar();

}void outputpoker(poker pk);

charpoint[16] = ;

printf("%s%s\n",type[pk.type],point[pk.point]);

}bool cmppoker1(poker a, poker b)//按點數優先排序從小到大

bool cmppoker2(poker a, poker b)//按花色優先排序從小到大

bool cmppoker3(poker a, poker b)//按點數優先排序從大到小

bool cmppoker4(poker a, poker b)//按花色優先排序從大到小

bool cmppoker5(poker a, poker b)

else if(a.point<=13)

return (a.point > b.point) || (a.point == b.point&&a.type > b.type);

}//鬥地主排序從大到小大》小王》2

void way1(poker *src, int n,bool(*cmp)(poker,poker) = cmppoker1)

src[j] = tmp;}}

int main_();

/poker p[5];/

/for (int i = 0; i < 5; i++)/

way1(p, 5,cmppoker1);

for (auto i : p)

printf("\n");

way1(p, 5, cmppoker5);

for (auto i : p)

printf("\n");

way1(p, 5, cmppoker3);

for (auto i : p)

printf("\n");

way1(p, 5, cmppoker4);

for (auto i : p)

printf("\n");

system(「pause」);

return 0;

}

C 對結構體元素排序

遇到了兩個動態陣列 vectora,vectorb.兩者對應的位置上的元素是有匹配關係的,如 vectora 0 對應著 vectorb 0 需要根據vectora中的元素來將vectora,vectorb中的元素都進行排序 公升序或者降序 最開始做法 在迴圈體中 後來修改做法 1.定義乙個結構體,...

sort函式對結構體多級排序

一 為什麼要用c 標準庫里的排序函式 sort 函式是c 一種排序方法之一,學會了這種方法也打消我學習c 以來使用的氣泡排序和選擇排序所帶來的執行效率不高的問題!因為它使用的排序方法是類似於快排的方法,時間複雜度為n log2 n 執行效率較高!二 c 標準庫里的排序函式的使用方法 i sort函式...

C 結構體排序(運算子過載,比較函式重寫)

對於雙 多 標準的結構體排序,有三種方法可供參考。struct numberans maxsize 比較規則 將結構體按cnt降序排列,若cnt值相同時,按val公升序排。1.比較函式的重寫 bool cmp const number a,const number b sort ans,ans le...