當前位置:成語大全網 - 書法字典 - 如何在c語言中使用排序函數

如何在c語言中使用排序函數

C語言中沒有預設的排序函數。如果在C語言中調用排序函數,則該函數是用戶自定義函數,並且該函數壹般用於排序。

首先,您可以編寫自己的排序函數。

以下函數用於從小到大對整數數組進行排序。

虛空?sort(int?*a,?int?l)//a是數組地址,l是數組長度。

{

int?我,?j;

int?五;

//排序實體

對於(我?=?0;?我?& lt?l?-?1;?我?++)

對於(j?=?I+1;?j?& lt?l;?j?++)

{

如果(a【I】?& gt?a【j】)//如果前面的比後面的大,就換。

{

v?=?a【I】;

甲【我】?=?a【j】;

a【j】?=?五;

}

}}對於這樣的自定義排序函數,可以根據定義的規範進行調用。

第二,C語言有自己的qsort函數。

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

頭文件:stdlib.h

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

參數:

1要排序數組的第壹個地址

2數組中要排序的元素數量

3每個元素占用的空間

4指向函數的指針,用於確定排序順序。

這個函數必須編寫自己的比較函數,即使要排序的元素是int int、float等C語言基本類型。

以下是qsort的壹個示例:

# include & ltstdio.h & gt

# include & ltstdlib.h & gt

int?comp(常量?void*a,常量?void * b)//用於比較的函數。

{

回歸?*(int *)a-*(int *)b;

}

int?主()

{

int?a【10】?=?{2,4,1,5,5,3,7,4,1,5};//無序數組。

int?我;

qsort(a,n,sizeof(int),comp);//調用qsort排序

for(I = 0;我& lt10;i++)//輸出排序後的數組

{

printf(“% d \ t“,array【I】);

}

回歸?0;

}

擴展數據:

sort函數的用法(調用C++排序庫函數)

數組是排序的,c++中有庫函數幫助我們實現,所以我們不需要自己編程。

(A)為什麽使用c++標準庫中的排序函數?

Sort()函數是c++的排序方法之壹。學習這種方法還消除了我學習c++以來壹直使用的冒泡排序和選擇性排序導致的執行效率低的問題!因為它使用的排序方法類似於快速排序方法,時間復雜度為n * log2(n),執行效率很高!

(2)如何使用c++標準庫中的排序函數

I)I)排序函數包含在頭文件# include中

II)II)排序函數有三個參數:

(1)第壹個是要排序的數組的起始地址。

(2)第二個是結束地址(要排序的最後壹個地址旁邊的地址)。

(3)第三個參數是排序方法,可以從最大到最小或從最小到最大,第三個參數可以省略。此時,默認的排序方法是從最小到最大。

排序功能使用模板:

排序(開始、結束、排序方法)

讓我們解釋壹下如何結合使用sort()函數對數組中的十個數字進行排序!

示例sort函數沒有第三個參數,它是從小到大實現的。

# include & ltiostream & gt

# include & lt算法& gt

使用命名空間std

int main()

{

int a【10】= { 9,6,3,8,5,2,7,4,1,0 };

for(int I = 0;我& lt10;i++)

cout & lt& lta【I】& lt;& ltendl

sort(a,a+11);

for(int I = 0;我& lt10;i++)

cout & lt& lta【I】& lt;& ltendl

返回0;

}

編譯程序

GCC,由GNU組織開發的開源免費編譯器。

Windows操作系統下的MinGW GCC

基於LLVM的BSD協議開源編譯器Clang。

Visual C++?cl.exe,微軟VC++編譯器。

集成開發環境

代碼塊、開源和免費C/C++ IDE。

CodeLite,壹個開源和跨平臺的C/C++集成開發環境。

Orwell Dev-C++,壹個可移植的C/C++IDE。

不含碳

看版臺

Visual Studio系列

妳好世界

參考資料:

百度百科-排序功能