最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何使用VC庫(kù)函數(shù)中的快速排序函數(shù)

 更新時(shí)間:2013年09月14日 09:33:52   作者:  
下面呢,小編就為大家介紹一下VC中庫(kù)函數(shù)qsort()的用法。需要的朋友可以過(guò)來(lái)參考下

函數(shù)原型:
void qsort(void *base,size_t num,size_t width,
int (__cdecl *compare )(const void *, const void *) );

第一個(gè)是數(shù)組地址,第二是數(shù)組大小,第三個(gè)是數(shù)組中每個(gè)元素的字節(jié)數(shù),最后一個(gè)是個(gè)函數(shù)指針,表示如何比較數(shù)組中的元素。

頭文件 #include <stdlib.h>
下面分別就int等整數(shù)數(shù)據(jù),double等浮點(diǎn)數(shù)據(jù),結(jié)構(gòu)體和類,按指定方式這四種情況進(jìn)行講解。

實(shí)例1、對(duì)int等整數(shù)數(shù)據(jù)進(jìn)行排序

復(fù)制代碼 代碼如下:

int cmp(const void *x, const void *y)
{
 return *(int*)x - *(int*)y;
}
qsort(a, MAXN, sizeof(a[0]), cmp);

MAXN為數(shù)組大小,下同

實(shí)例2、對(duì)double等浮點(diǎn)數(shù)進(jìn)行排序

復(fù)制代碼 代碼如下:

int cmpDouble(const void *x, const void *y)
{
 return (*(double*)x > *(double*)y ? 1 : -1);
}
qsort(a, n, sizeof(a[0]), cmpDouble);

實(shí)例3、對(duì)結(jié)構(gòu)體,類等復(fù)雜數(shù)據(jù)進(jìn)行排序

復(fù)制代碼 代碼如下:

struct Student
{
 char szName[30];
 int  nAge;
};

先對(duì)年齡排序,年齡相同再按姓名排序。
復(fù)制代碼 代碼如下:

int cmpStudent (const void *x, const void *y)
{   //先作下指針轉(zhuǎn)換,再按要求比較
 Student *pNodex = (Student*)x, *pNodey = (Student*)y;
 if (pNodex->nAge != pNodey->nAge)
  return pNodex->nAge - pNodey->nAge;
 else
  return strcmp(pNodex->szName, pNodey->szName);
}
qsort(a, n, sizeof(a[0]), cmpStudent);

實(shí)例4、按指定方式進(jìn)行排序。
如對(duì)只有大小寫(xiě)字母的字符串"AajkuKdYUBCDwyz"進(jìn)行排序,要求大寫(xiě)字母在前,小寫(xiě)字母在后。
復(fù)制代碼 代碼如下:

int cmp1(const void *x, const void *y)
{
 char *pcx = (char*)x, *pcy = (char*)y;

 bool flag1 = *pcx >= 'A' && *pcx <= 'Z';
 bool flag2 = *pcy >= 'A' && *pcy <= 'Z';

 if(flag1 == flag2)    //如果都為大寫(xiě)字母或都為小寫(xiě)字母
  return *pcx - *pcy;
 else                  //否則,誰(shuí)為大寫(xiě)字母,誰(shuí)的權(quán)值小。
  return flag1 ? -1 : 1;
}
int main()
{
 char szText[] = "AajkuKdYUBCDwyz";
 qsort(szText, strlen(szText), sizeof(szText[0]), cmp1);
 printf("%s\n", szText);
 return 0;
}

相關(guān)文章

  • 基于C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易三子棋游戲

    基于C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易三子棋游戲

    這篇文章主要為大家詳細(xì)介紹了基于C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易三子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下<BR>
    2022-01-01
  • C++實(shí)現(xiàn)新年賀卡程序

    C++實(shí)現(xiàn)新年賀卡程序

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)賀卡程序,C++應(yīng)用程序編寫(xiě)的雪花賀卡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • 巧妙使用RAII中的ScopeExit

    巧妙使用RAII中的ScopeExit

    Resource Acquisition Is Initialization,資源獲取即初始化,將資源的生命周期與一個(gè)對(duì)象的生命周期綁定,這篇文章主要介紹了巧妙使用RAII中的ScopeExit,需要的朋友可以參考下
    2021-05-05
  • Qt QChart實(shí)現(xiàn)折線圖的繪制

    Qt QChart實(shí)現(xiàn)折線圖的繪制

    QChart是常用的圖表,這篇文章主要為大家詳細(xì)介紹了Qt如何利用QChart實(shí)現(xiàn)折線圖的繪制,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2023-04-04
  • 在C++?中慎用setjmp和longjmp解析

    在C++?中慎用setjmp和longjmp解析

    setjmp和longjmp是C語(yǔ)言中用于實(shí)現(xiàn)非局部跳轉(zhuǎn)的函數(shù),setjmp和longjmp 是 C 語(yǔ)言中一個(gè)很強(qiáng)大的函數(shù),這篇文章主要介紹了在C++?中慎用setjmp和longjmp的相關(guān)知識(shí),需要的朋友可以參考下
    2023-06-06
  • 養(yǎng)成良好的C++編程習(xí)慣之內(nèi)存管理的應(yīng)用詳解

    養(yǎng)成良好的C++編程習(xí)慣之內(nèi)存管理的應(yīng)用詳解

    "養(yǎng)成良好的編程習(xí)慣"其實(shí)是相當(dāng)綜合的一個(gè)命題,可以從多個(gè)角度、維度和層次進(jìn)行論述和評(píng)判,如代碼的風(fēng)格、效率和可讀性;模塊設(shè)計(jì)的靈活性、可擴(kuò)展性和耦合度等等,要試圖把所有方面都闡述清楚必須花很多的精力,而且也不一定能闡述得全面
    2013-05-05
  • 關(guān)于C++內(nèi)部類的介紹與使用示例

    關(guān)于C++內(nèi)部類的介紹與使用示例

    今天小編就為大家分享一篇關(guān)于關(guān)于C++內(nèi)部類的介紹與使用示例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • C語(yǔ)言關(guān)于注釋的知識(shí)點(diǎn)總結(jié)

    C語(yǔ)言關(guān)于注釋的知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給大家分享的是關(guān)于C語(yǔ)言關(guān)于注釋的知識(shí)點(diǎn)總結(jié),需要的朋友們可以參考學(xué)習(xí)下。
    2020-02-02
  • VC++ 使用 _access函數(shù)判斷文件或文件夾是否存在

    VC++ 使用 _access函數(shù)判斷文件或文件夾是否存在

    這篇文章主要介紹了VC++ 使用 _access函數(shù)判斷文件或文件夾是否存在的相關(guān)資料,需要的朋友可以參考下
    2015-10-10
  • C語(yǔ)言中常用的幾個(gè)頭文件及庫(kù)函數(shù)

    C語(yǔ)言中常用的幾個(gè)頭文件及庫(kù)函數(shù)

    這篇文章主要介紹了C語(yǔ)言中常用的幾個(gè)頭文件及庫(kù)函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2017-09-09

最新評(píng)論

卢湾区| 浪卡子县| 萝北县| 尚志市| 桑植县| 吉林省| 山西省| 六安市| 三台县| 舞阳县| 临澧县| 潼南县| 富源县| 金湖县| 利川市| 高淳县| 福贡县| 新昌县| 南陵县| 东源县| 泸西县| 确山县| 浪卡子县| 泽库县| 江油市| 英德市| 维西| 南投市| 修武县| 榆中县| 阳朔县| 彰化县| 五台县| 拉萨市| 木兰县| 英德市| 望江县| 南阳市| 崇信县| 佛山市| 固镇县|