sort 和qsort函式cmp函式各種寫法

2021-07-04 00:10:57 字數 2020 閱讀 6112

用sort 函式,要加標頭檔案以及using namespace std;另外檔案的字尾要改為.cpp

用qsort函式,要加標頭檔案這個是c裡的,檔案的字尾可以是.c

int型:

sort函式:

int cmp(int a,int b)

return a>b;//(從大到小)return aqsort函式:

int cmp(const  void *a,const  void  *b)

return *(int *)a-*(int *)b;//(從大到小)return *(int *)b-*(int *)a;(從小到大)

double 型:

sort函式:

int cmp(double a,double b)

if(a>b)return 1;//(從大到小)if(areturn -1;

qsort函式:

int cmp(const void *a,const void *b)

if(*(double *)a>*(double *)b)return 1;//(從大到小)if(*(double *)b>*(double *)a)return 1;(從小到大)

return -1;

char 型:

sort函式:

int cmp(char a,char b)

return a>b;//(從大到小)return aqsort函式:

int cmp(const void *a,const void *b)

return *(char *)a>*(char *)b;//(從大到小)return *(char *)b>*(char *)a;(從小到大)

}字串型:

包含標頭檔案

qsort函式:

int cmp(const void *a,const void *b)

return strcmp((char *)a,(char *)b);//(從大到小)return strcmp((char *)b,(char *)a);(從小到大)因為字串比較函式直接用的是位址,so。。。。

}結構體型:

struct node

int a;

char b;

double t;

char s[101];

}stu[1001];

sort函式:

int cmp(node c,node d)

return c.a>d.a;//return c.a//return c.b>d.b;//return c.b//if((*(node *)c).t>(*(node *)d).t)return 1;return 0;

//return strcmp(c.s,d.s);//return strcmp(d.s,c.s);

//if(c.a==d.a)return c.b}

qsort函式:

int cmp(const void *c,const void *d)

{return (*(node *)c).a-(*(node *)d).a;//return (*(node *)c).a>(*(node *)d).a;

//return (*(node *)c).b-(*(node *)d).b;//return (*(node *)c).b>(*(node *)d).b;

//if((*(node *)c).t>(*(node *)d).t)return 1;return 0;

//return strcmp((*(node *)c).str,(*(node *)d).str)//return strcmp((*(node *)c).str,(*(node *)d).str);

//if((*(node *)c).a==(*(node *)d).a) return (*(node *)c).b>(*(node *)d).b;

呼叫時sort函式有三個引數例如陣列a:sort(a,a+n,cmp);//n為排序的長度

呼叫qsort函式時有四個引數例如陣列a:qsort(a,n,sizeof(a),cmp);//n為排序長度,sizeof()求所佔記憶體的吧

qsort與sort函式中cmp的編寫方法與解析

在使用c c 語言進行程式設計時,為了方便起見,我們在排序時經常呼叫系統提供的排序函式來完成部分排序功能,本文將介紹qsort與sort函式的用法,尤其是其cmp函式的編寫方法。c語言中,編譯器函式庫自帶的快速排序函式。標頭檔案 stdlib.h qsort 的函式原型是void qsort voi...

qsort函式和sort函式

做acm題的時候,排序是一種經常要用到的操作。如果每次都自己寫個冒泡之類的o n 2 排序,不但程式容易超時,而且浪費寶貴的比賽時間,還很有可能寫錯。stl裡面有個sort函式,可以直接對陣列排序,複雜度為n log2 n 使用這個函式,需要包含標頭檔案 include 這個函式可以傳兩個引數或三個...

排序函式qsort和sort

qsort函式 sort函式 精心整理篇 文件 先說明一下qsort和sort,只能對連續記憶體的資料進行排序,像鍊錶這樣的結構是無法排序的。首先說一下,qsort qsort 基本快速排序的方法,每次把陣列分成兩部分和中間的乙個劃分值,而對於有多個重複值的陣列來說,基本快速排序的效率較低,且不穩定...