STL中的sort()与qsort()

来源:互联网 发布:化学方程式书写软件 编辑:程序博客网 时间:2024/06/09 22:27
sort的返回值问题,参考<a target=_blank href="http://lonemover.blog.sohu.com/132651187.html">http://lonemover.blog.sohu.com/132651187.html</a>
cmp返回true的时候不交换,返回false的时候交换两元素。
稳定排序可以用stable_sort();
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<algorithm>#include<iostream>#define MAX 3009 using namespace std;sort(); sort 函数需包含在#include <algorithm>中; 适用于基本类型: sort(begin,end),表示一个范围,默认升序主要用于自定义类型 : sort(begin,end,compare) 可实现自定义的排序,自己编写compare函数,要求返回类型为bool型。 struct D{//自定义类型     char sorted;    bool operator <(const D tmp) const{        return (this->sorted)<(tmp.sorted);        }     //1:函数体内,是自己写的代码,返回值为bool型即可。自定义类型没有+、-、*、/、>、<    //等运算,但是可以通过重载使之像基本类型(int、char)等一样,具有这些运算。    //2:sort();函数对不是基本类型的变量进行排序时,可用以下形式sort(s,s+4,cmp)(其中cmp自己写);    //也可以重载(operator <)后直接这么用sort(s,s+4);此时的sort();函数只会去找重载的 < 而不会去找其他的重载运算符;     }s[100];bool compare(struct D a,struct D b){    return a.sorted<b.sorted;}
/**
bool cmp(struct Node a, struct Node b){    if(a.time==b.time) return a.level > b.level;    return a.time > b.time;}
**/
</pre><pre name="code" class="cpp">int main(){    int i=0;    for(i=0;i<4;i++){        scanf("%s",s[i].sorted);    }    重载:sort(s,s+4);     自己编写compare函数:sort(s,s+4,compare);    for(i=0;i<4;i++){        printf("%s\n",s[i].sorted);    }    scanf("%d",&i);return 0;}
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<algorithm>#include<iostream>#define MAX 3009 using namespace std;qsort()原型:_CRTIMP void __cdecl qsort (void*, size_t, size_t,int (*)(const void*, const void*));解释: qsort ( 起始地址,元素个数,元素大小,比较函数) 比较函数是一个自己写的函数 遵循 int com(const void *a,const void *b) 的格式。当 a b 关系为 > < = 时,分别返回正值 负值 零 (或者相反)。使用 a b 时要强制转换类型,从 void * 转换回应有的类型后,进行操作。 数组下标从零开始,个数为 N, 下标 0-(n-1)。int compare(const void *a,const void *b){return *(int*)b-*(int*)a; }struct D{//自定义类型     char sorted;}s[100];int compare(const void *a,const void *b){    return (*(struct D *)a).sorted-(*(struct D *)b).sorted;}int compare(const void *a,const void *b){    return ((struct D *)a)->sorted-((struct D *)b)->sorted;}


原创粉丝点击