排序之根据某一字段的应用排序实现

来源:互联网 发布:淘宝秒杀训练 编辑:程序博客网 时间:2024/06/02 02:26

DS里介绍了各种狂拽酷炫的排序算法,但是都是基于单个元素,实际应用中对某条记录的某个字段来排序的情况层出不穷,如果还是原来的算法直接用的话,恐怕无济于事,

于是我想怎么根据某个字段来排序,当时学C++的时候qsort,一直都用这个排序,有个compare函数比较纠结,里面指针多,这个是排序的依据,在这里就有用了,如果你用sort估计是不行了,或者自己重写sort,比较的交换的时候改一改就好了。


基于这个目的,有了下面的toy代码,这样其他的都可以套了。但是如果是vector好像不行,我再看看怎么解决(vector解决了,用sort 也是带个比较函数的参数,见后一篇日志)

#include <iostream>#include <vector>using namespace std;struct node{int val;int val2;};int compare(const void*a, const void*b){if(((node*)a)->val2>((node*)b)->val2) return 1;if(((node*)a)->val2<((node*)b)->val2) return -1;if(((node*)a)->val2==((node*)b)->val2) return 0;}int main(){node na[10];vector<node> vec;int num=10;for(int i=0;i<num;i++){node n;n.val=i;n.val2=-i;na[i]=n;}qsort(na,num,sizeof(node),compare);return 0;}


0 0