C語言中排序函式的用法
阿新 • • 發佈:2019-01-08
C語言中沒有預置的sort函式。如果在C語言中,遇到有呼叫sort函式,就是自定義的一個函式,功能一般用於排序。
一、可以編寫自己的sort函式。
如下函式為將整型陣列從小到大排序。
void sort(int *a, int l)//a為陣列地址,l為陣列長度。
{
int i, j;
int v;
//排序主體
for(i = 0; i < l - 1; i ++)
for(j = i+1; j < l; j ++)
{
if(a[i] > a[j])//如前面的比後面的大,則交換。
{
v = a[i];
a[i] = a[j];
a[j] = v;
}
}
}
對於這樣的自定義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<stdio.h>
#include<stdlib.h>
int comp(const void*a,const void*b)//用來做比較的函式。
{
return *(int*)a-*(int*)b;
}
int main()
{
int a[10] = {2,4,1,5,5,3,7,4,1,5};//亂序的陣列。
int i;
qsort(a,n,sizeof(int),comp);//呼叫qsort排序
for(i=0;i<10;i++)//輸出排序後的陣列
{
printf("%d\t",array[i]);
}
return 0;
}