1. 程式人生 > >C語言中排序函式的用法

C語言中排序函式的用法

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; }