sort函式中的cmp函式使用

2021-10-10 13:40:54 字數 1321 閱讀 8731

在leetcode上面刷題的時候發現大家使用sort函式的時候總能用出一些與眾不同的比較方式,其中使用cmp自己定義排序放的非常的方便,因此我們這裡記錄一下cmp的使用。

首先我們先來看一下最基礎的排序方式:

這樣我們得到的結果就是乙個非常簡單的非遞減排序

那麼cmp函式的使用是怎麼樣的呢,cmp函式的定義其實很奇特,他是乙個返回值為bool型別的函式,它定義的內容其實是「小於」,可能這麼講不太清楚,所以我們先看個例子:

在主函式前我們新定義了乙個cmp(什麼名字都行),然後主要看裡面的判斷,其中返回值是a>b的真假。如果a>b,那麼返回值為真,也就是說在這裡,a>b的情況才是「小於」,所以比較大的值a其實這時候是「小於」b的,所以sort就通過我們定義的「小於」去重新排列,排列出的順序應該是和上面的例子相反的結果,執行得到下面結果:

這裡講解的是比較基礎的定義cmp,下面介紹更高階的定義模式,我們這個例子還是使用大家非常熟悉結構,學生姓名以及學生成績,我們可以看到每個學生都會有乙個姓名和乙個成績,我們想要對學生按成績進行排名,那麼方式就如下所示:

#include#includeusing namespace std;

struct student

; bool cmp(student a, student b)

int main()

//我懷疑有的老師就是這麼打成績的

我們可以看到學生已經按照成績的高低排列好,所以根據這種方式我們可以使很多困難的排序題變得簡單起來。感覺學廢了的同學可以去leetcode上面做一下973. 最接近原點的 k 個點這道題練練手。

關於sort 函式編寫cmp函式

sort 函式中,一般是用於陣列中整形資料的排序,但是 遇見結構體中有多個整形資料,sort的功能就開始迷糊了,所以我們需要在結構體中定下需要比較哪組,第一 sort begin,begin n 第二 利用cmp進行倒序,公升序 bool compare int a,int b sort a,a 2...

sort自定義cmp函式

include include include using namespace std bool comp const int a,const int b int main 執行結果 233 113 23 13 3 請按任意鍵繼續 什麼會這樣呢?比較時sort函式根據comp函式進行判斷輸的大小,系...

sort 和qsort函式cmp函式各種寫法

用sort 函式,要加標頭檔案以及using namespace std 另外檔案的字尾要改為.cpp 用qsort函式,要加標頭檔案這個是c裡的,檔案的字尾可以是.c int型 sort函式 int cmp int a,int b return a b 從大到小 return aqsort函式 i...