sort函式的用法,Calgorithm裡的sort函式怎麼用

2021-03-04 01:50:05 字數 7263 閱讀 1561

1樓:華工大學生

你說matlab嗎?bai

裡面有個引數,可以du用:

sort(a,'ascend')%升序

zhisort(a,'descend')%降序;

a為向量或dao陣列.

也可以這樣回:先對答a求相反數,成-a,然後升序,然後再求相反數.(這只是很簡單的數學技巧!在程式設計時相當有用!)

如果你是c語言,我記得沒有函式.你可以自己寫.用一些排序演算法實現.

2樓:江湖三腳貓

標準庫函式中並沒有sort函式,一般都是自己寫的排序函式起名叫sort,自己根據要求寫個降序排列函式就可以了。

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

3樓:四舍**入

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),執行效率較高。

4樓:匿名使用者

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),***pare_function_name) (void*)bsearch (pointer_to_key_word,array_name,find_number,

sizeof(data_type),***pare_function_name)

e.g.

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

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

5樓:匿名使用者

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

#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);

6樓:貿金蘭嬴橋

void

sort(

iterator

start,

iterator

end);

void

sort(

iterator

start,

iterator

end,

strictweakordering

cmp);

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

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

c語言中的sort函式怎麼使用,請舉出一個例項,非常感謝!

7樓:匿名使用者

#include

#include

using namespace std;

main()

;//a的長度=待排資料個數+1

sort(a,a+10);//對[a,a+10)排序for(int i=0;i<10;++i) cout<

8樓:流星不死

#include //需要包含這個標頭檔案

#include

using namespace std;

int main(void)

;sort(a,a+10);//對a陣列進行升序排序for(int i = 0;i < 10;i++)cout<函式  c語言裡沒有。

std::sort()函式的用法

9樓:匿名使用者

std::sort(begin, end)是快速排序,begin是帶bai排序序

du列第一個元zhi素,end是最後一個元素後dao面的標誌。

如果要專排序的是屬陣列,要排序陣列a第[i]到第[j](包括)的元素,那麼就是

std::sort(&a[i],&a[j+1]);

簡化就是std::sort(a+i, a+j+1);瞭如果要排序的是vector,那麼可以寫成std::sort(v.begin(),v.end());

另外,照這個用法的話,***_tmp的話恐怕應該是長度為n的陣列而不是n維陣列。

10樓:何度千尋

sort()語法du描述為:

zhi        sort(begin,end)表示一個範圍dao,例如:

int main()

,i;for(i=0;i<20;i++)

cout<

輸出結果版將權是把陣列a按升序排序

c語言怎麼使用sort函式,求舉個簡單的例子,謝謝

11樓:匿名使用者

用 qsort,並且bai要自己寫比較函

du數。

例如:有個 int a[1000] 的陣列zhi要排序。而比較dao函式版你已經寫好了名權字是 ***p,則這樣寫:

qsort(a,1000,sizeof(int),***p);

比較函式 ***p 如下:

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

詳細的可以查一下關於 qsort 的說明。

12樓:南霸天

sort()函bai數描述:對給定區du間所有元素進行zhi排序。

sort()dao

函式版語法:權sort(begin,end),表示一個範圍。

sort()函式舉例:

int _tmain(int argc, _tchar* argv),i;for(i=0;i<20;i++)

cout<

sort(a,a+20);

for(i=0;i<20;i++)

cout<

return 0;

}輸出結果將是把陣列a按升序排序。

13樓:匿名使用者

好像標準庫裡沒有sort吧,只能自己實現

sort函式的具體用法?

14樓:少男少女

做acm題的時候,排序是一種經常要用到的操作。如果每次都自己寫個冒泡之類的o(n^2)排序,不但程式容易超時,而且浪費寶貴的比賽時間,還很有可能寫錯。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());

排序的資料型別不侷限於整數,只要是定義了小於運算的型別都可以,比如字串類string。

如果是沒有定義小於運算的資料型別,或者想改變排序的順序,就要用到第三引數——比較函式。比較函式是一個自己定義的函式,返回值是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(arr,a+100,cmp);

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

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

一、對int型別陣列排序

int num[100];

sample:

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

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

二、對char型別陣列排序(同int型別)

char word[100];

sample:

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

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

三、對double型別陣列排序(特別要注意)

double in[100];

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

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

四、對結構體一級排序

struct in

s[100]

//按照data的值從小到大將結構體排序,關於結構體內的排序關鍵資料data的型別可以很多種,參考上面的例子寫

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

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

五、對結構體

struct in

s[100];

//按照x從小到大排序,當x相等時按照y從大到小排序

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

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

六、對字串進行排序

struct in

s[100];

//按照結構體中字串str的字典順序排序

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

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

七、計算幾何中求凸包的cmp

int cmp(const void *a,const void *b) //重點cmp函式,把除了1點外的所有點,旋轉角度排序

mul函式的具體用法sort函式的具體用法?

mul指令是乘法指令。使用mul做乘法的時候 1 兩個相乘的數 兩個相乘的數,要麼都是8位,要麼都是16位。如果是8位,一個預設放在al中,另外一個存放在8為暫存器或位元組記憶體單元中 如果是16位,一個預設在ax中,另外一個放在16為暫存器或記憶體暫存器字單元中。2 結果 如果是8位乘法,結果預設...

隨機函式的用法,random函式的用法

srand 函式是c語言中產生隨機數的一個函式。函式原型 void srand unsigned seed 功 能 產生隨機數的起始發生資料,版和rand函式配合使權用。頭 文 件 舉例如下 include include include int main void 執行程式,會發現每次產生的隨機數...

vb中隨機函式的用法,VB中隨機函式的用法

int rnd 6 1 隨即產生1到6之間的整數rnd 函式隨即產生一個大於等於0但小於1的 單精度浮點數 例如 你要隨即產生10到96之間的整數 int rnd 87 10 假設產生a到b之間的整數 則這個範圍應該是b a,由於rnd隨機產生的數小於1且大於等於0,則應該將rnd 乘以 b a 1...