c語言sort函式如何使用C語言sort函式如何使用

2021-03-06 16:31:28 字數 6825 閱讀 1072

1樓:demon陌

c語言中沒有預置的sort函式。如果在c語言中,遇到有呼叫sort函式,就是自定義的一個函式,功能一般用於排序。

一、可以編寫自己的sort函式。

如下函式為將整型陣列從小到大排序。

void sort(int *a, int l)//a為陣列地址,l為陣列長度。

}}對於這樣的自定義sort函式,可以按照定義的規範來呼叫。

二、c語言有自有的qsort函式。

功 能: 使用快速排序例程進行排序

標頭檔案:stdlib.h

原型: void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *));

引數:1 待排序陣列首地址

2 陣列中待排序元素數量

3 各元素的佔用空間大小

4 指向函式的指標,用於確定排序的順序

這個函式必須要自己寫比較函式,即使要排序的元素是int,float一類的c語言基礎型別。

以下是qsort的一個例子:

#include

#include

int ***p(const void*a,const void*b)//用來做比較的函式。

int main()

;//亂序的陣列。

int i;

qsort(a,n,sizeof(int),***p);//呼叫qsort排序

for(i=0;i<10;i++)//輸出排序後的陣列

擴充套件資料:

sort函式的用法(c++排序庫函式的呼叫)

對陣列進行排序,在c++中有庫函式幫我們實現,這們就不需要我們自己來程式設計進行排序了。

(一)為什麼要用c++標準庫裡的排序函式

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

(二)c++標準庫裡的排序函式的使用方法

i)sort函式包含在標頭檔案為#include的c++標準庫中,呼叫標準庫裡的排序方法可以不必知道其內部是如何實現的,只要出現我們想要的結果即可!

ii)sort函式有三個引數:

(1)第一個是要排序的陣列的起始地址。

(2)第二個是結束的地址(最後一位要排序的地址的下一地址)

(3)第三個引數是排序的方法,可以是從大到小也可是從小到大,還可以不寫第三個引數,此時預設的排序方法是從小到大排序。

sort函式使用模板:

sort(start,end,排序方法)

下面就具體使用sort()函式結合對陣列裡的十個數進行排序做一個說明!

例一:sort函式沒有第三個引數,實現的是從小到大

#include

#include

using namespace std;

int main()

;for(int i=0;i<10;i++)

cout

for(int i=0;i<10;i++)

cout

}編譯器

gcc,gnu組織開發的開源免費的編譯器

mingw,windows作業系統下的gcc

clang,開源的bsd協議的基於llvm的編譯器

visual c++ :: cl.exe,microsoft vc++自帶的編譯器

整合開發環境

codeblocks,開源免費的c/c++ ide

codelite,開源、跨平臺的c/c++整合開發環境

orwell dev-c++,可移植的c/c++ide

c-free

light table

visual studio系列

hello world

2樓:憂鬱與陽光的

標頭檔案是#include

比如說陣列a[5]=;

當你用sort(a,a+5)時,就把陣列a從小到大排序了for(i=0;i<5;i++)

輸出為1 2 3 4 5

這樣說能理解嗎

3樓:義柏廠

c語言sort函式如何使用,這個使用一般都會有一個使用的說明書的,具體的這個我也這邊也不太瞭解,你自己按照說明書上使用就可以了吧,認真的把說明書解讀,也只能這樣幫你,我實在沒辦法。

4樓:258天啥抖

c語言sort函式如何使用 開啟手機找到胡會祥就可以找到

sort函式在c語言中如何使用?

5樓:匿名使用者

排序(sort)

語法:void sort();

void sort( ***p ***pfunction );

sort()函式為

抄連結串列排序bai,預設是升序。du如果指定***pfunction的話,就採用zhi指定函式來判定兩個元素dao的大小。

6樓:匿名使用者

這是一個使用者自定義函式,不是庫函式,sort()函式的可能主要看函式體裡面的語句所完成的功能

就字面來說,他應該是一個完成排序功能的函式。

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

7樓:匿名使用者

用 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 的說明。

8樓:南霸天

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按升序排序。

9樓:匿名使用者

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

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

10樓:匿名使用者

#include

#include

using namespace std;

main()

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

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

11樓:流星不死

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

#include

using namespace std;

int main(void)

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

舉出一個例項,在c語言中的sort函式怎麼使用?

12樓:匿名使用者

#include

#include

using namespace std;

main()

;//a的長度抄

襲=待排資料bai個數du+1

sort(a,a+10);//對

zhi[a,a+10)排序

daofor(int i=0;i<10;++i) cout<

sort函式在c語言中的作用是啥?

13樓:匿名使用者

1、sort()函式描述:對給定區間所有元素進行排序。

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

2、sort()函式舉例:

#include

#include

using namespace std;

main()

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

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

14樓:厚琅其梓楠

樓上兩位好像都有問題,這個函式傳的是陣列首地址,所以不需要返回值,for迴圈是需要大括號的。

改了一下:

void

sort(int

array,intn)}

15樓:匿名使用者

排序(sort)

語法:void sort();

void sort( ***p ***pfunction );

sort()函式為連結串列排序,預設是升序。如果指定***pfunction的話,就採用指定函式來判定兩個元素的大小

sort函式的具體用法?

16樓:少男少女

做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點外的所有點,旋轉角度排序

關於c的sort函式

cmp實際上是一個 函式模板,sort在呼叫時,是一個通用的過程。你可以假想sort是一個小機器人,能夠在專一個倉庫裡屬將貨架上的貨物進行排序。你第一次要求機器人 按照大小排序 於是機器人花了幾分鐘完成了大小排序,第二次你要求機器人 按照重量排序 於是機器人再次回到倉庫,對同樣的貨物進行排序,不同的...

C語言中log函式怎麼使用,C語言中log函式怎麼使用啊

log number 必要的抄 number 引數是襲 double 或任何bai有效的大於 0 的數值表示式。duzhi 說明自然對數是以 e 為底的對數。dao常數 e 的值大約是 2.718282。如下所示,將 x 的自然對數值除以 n 的自然對數值,就可以對任意底 n 來計算數值 x 的對數...

c語言中》和《如何使用C語言中和如何使用?

c語言中 代表左移運算子,代表右移運算子,位移位運算子是將資料看成二進位制數,對其進行向左或向右移動若干位的運算。代表左移運算子 左移運算子用來將一個數的各二進位制位全部左移若干位,移動的位數由右運算元指定,右運算元必須是非負值,其右邊空出的位用0填補,高位左移溢位則捨棄該高位。例如 設無符號短整型...