關於c用sort函式降序排序的小問題

2021-04-14 09:07:20 字數 3277 閱讀 6067

1樓:匿名使用者

#include

void sort( iterator start, iterator end );

void sort( iterator start, iterator end, strictweakordering cmp );

c++ algorithm 裡的sort函式怎麼用

2樓:四舍**入

sort函式用法例如:

sort(a,a+n,cmp);

是對陣列a降序排序

又如

else

return 0;}

sort(a,a+n,cmp);

是先按x升序排序,若x值相等則按y升序排。

預設的sort函式是按升序排,sort(a,a+n); //兩個引數分別為待排序陣列的首地址和尾地址。

擴充套件資料:

sort函式語法

sort(start,end,cmp)

引數1、start表示要排序陣列的起始地址

2、end表示陣列結束地址的下一位

3、cmp用於規定排序的方法,可不填,預設升序

功能sort函式用於c++中,對給定區間所有元素進行排序,預設為升序,也可進行降序排序。

一般是直接對陣列進行排序,例如對陣列a[10]排序,sort(a,a+10),而sort函式的強大之處在可與cmp函式結合使用,即排序方法的選擇。

sort()函式是c++一種排序方法之一,相較氣泡排序和選擇排序所帶來的執行效率不高的問題,sort()函式使用的排序方法是類似於快速排序的方法,時間複雜度為n*log2(n),執行效率較高。

3樓:匿名使用者

msdn中的定義:

templatevoid sort(ranit first, ranit last); //--> 1)templatevoid sort(ranit first, ranit last, pred pr); //--> 2)

標頭檔案:

#include

using namespace std;

1.預設的sort函式是按升序排。對應於1)

sort(a,a+n); //兩個引數分別為待排序陣列的首地址和尾地址

2.可以自己寫一個cmp函式,按特定意圖進行排序。對應於2)

例如:

sort(a,a+n,cmp);

是對陣列a降序排序

又如

else

return 0;

}sort(a,a+n,cmp);

是先按x升序排序,若x值相等則按y升序排

與此類似的還有c中的qsort,以下同附上qsort的使用方法:

#include

格式 qsort(array_name,data_number,sizeof(data_type),compare_function_name) (void*)bsearch (pointer_to_key_word,array_name,find_number,

sizeof(data_type),compare_function_name)

e.g.

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

qsort(data,n,sizeof(int),cmp); // 對int型陣列進行快速排序(非降序排列)

4樓:匿名使用者

可以不填,如果不填就是從小到大排序。

#include

using namespace std;

#include

#include

int main(void)

for(int i = 0; i < n; i++)cin >> m[i];

sort(m, m + n);

for(int i = 0; i < n; i++)cout << m[i] << ends;//ends是空格return 0;

}如果填的話就是

從大到小排序:

#include

using namespace std;

#include

#include

bool cmp(int a,int b)int main(void)

for(int i = 0; i < n; i++)cin >> m[i];

sort(m, m + n, cmp);

for(int i = 0; i < n; i++)cout << m[i] << ends;//ends是空格return 0;

}說白了,第三個引數就是我們自己寫的一個函式,這個函式只要返回只為int型別就可以了並且有兩個引數就可以了,但是若真的想要做到排序,只要讓(從小到大)這個函式裡寫return ab;

/*cmp只是函式名稱,是可以隨便定義的。a和b的型別也不一定是int,可以是float、double、甚至你自己寫的結構體。但注意你比較的元素不再是a > b*/

int cmp(int a, int b)如有一個結構體陣列:

struct node

a[100];

那麼cmp函式應該這麼寫:

int cmp(struct node a, struct node b)

按照v的大小來從大到小排序只需要:

sort(a, a + 100, cmp);

5樓:貿金蘭嬴橋

void

sort(

iterator

start,

iterator

end);

void

sort(

iterator

start,

iterator

end,

strictweakordering

cmp);

第一個只需要傳遞你要排序的串(整形陣列等都行)的頭指標(陣列第一個元素的指標)與陣列最後元素的下一個位置

第二個前面兩個引數同第一,但第三個引數是傳遞一個你定義用於排序的函式(返回比較的大小值,如strcmp或自定義的都行),因為第一個用的是預設的哈

關於Python中sort函式賦值的問題

python中的sort 方法用於陣列排序,本文以例項形式對此加以詳細說明 一 基本形式 列表有自己的sort方法,其對列表進行原址排序,既然是原址排序,那顯然元組不可能擁有這種方法,因為元組是不可修改的。123x 4,6,2,1,7,9 x.sort print x 1,2,4,6,7,9 如果需...

C語言,編寫函式,函式是用選擇排序法將陣列排序

px 10 改為 px a 編寫函式,使用選擇排序法對陣列進行排序 用c語言 include include include int main void if i tmp for i 0 i 10 i printf 3d a i printf n return 0 隨機產生陣列中的元素,更合理一些。...

關於C語言單向連結串列,編寫主函式,要求用函式實現如下功能

include using namespace std class node class linklist void insert node node,int index if index 0 node current node head int count 0 while current node...