qsort函数排序
標題qsort函數排序##
qsort是庫函數要引頭文件#include<stdlib.h> qsort有四個參數,qsort(arr,sz,sizeof(arr[0],my_cmp);
第一個參數是起始位置(一般用數組名)
第二個參數是數組有多少個元素,一般用int=sz=sizeof(arr)/sizeof(sizeof(arr[0]);sizeof(數組名)求出數組的大小,單位是字節,sizeof(arr[0])這是求出第一個的大小,事實上求數組中的哪一個元素都可以,因為數組是一類相同類型的集合。所以他們相除算出的是數組元素個數。
第三個參數是數組每個元素的大小,也可以用sizeof(數組的類型)來計算。
第四個參數是函數的排列比較,就是寫一個比較函數。這個函數的形式是
int(const void* a,const void* b);
其中void他是不確定類型的指類型的指針,可以接受任意類型變量的地址,如int a=10;void p=&a;char b=‘w’;void* pa=&b;但是對于void類型的指針,因為他不確定類型,所喲對他進行++ --都是錯誤的操作,比如上述p++、pa++,P–等都是err寫法,因為類型不確定導致程序不知道向前或向后訪問幾個字節(int向后訪問4字節,char向后訪問1字節)。
下面來具體實現一個:
#include<stdlib.h>
#include<stdio.h>
**int int_cmp(const voida,const voidb) //函數實現
{
return (int )a-(int)b;
}//升序
//其中(int),為將void強制轉化(int)
//return (int)b-(int)a;//降序
int main( ) //整形排序
{
int arr[]={1,3,4,5,6,9,7,8,0,2};
int sz=sizeof(arr)/sizeof(arr[0]);
qsort(arr,sz,sizeof(int),int_cmp);
int i=0;
for(i=0;i<sz;i++)
{
printf("%d ",(arr+i));//打印每一個元素(arr+i)等價于arr[i]
}
return 0;
}
總結
- 上一篇: 服务器显示已登陆的用户太多,服务器远程连
- 下一篇: JASS萌新学习指南(1.1)