有些问题总是不停的忘,感觉还是记下来作为备忘录比较好!
在便携式算法刷题之中用到的最多的一个函数式排序函数,尽管排序算法很多,比如冒泡,插入,快排,堆排等等,实际上大家都没有亲自去实现,而是调用c++或者java中的模板来实现的,由于下学期的助教要担任c++/c程序设计,现将其调用方式在重复一遍,而且实际桑记住一个就可以了。这里就说明一下qsort吧
#include <stdio.h>
#include <stdlib.h>
typedef struct{
int a;
int b;
} node;
递增的排序方式
int cmp1(const void * a,const void * b){
node aa=*((node *)a);
node bb=*((node *)b);
if(aa.a>bb.a){
return 1;
}
else if(aa.a==bb.a){
return 0;
}
else{
return -1;
}
}
递减的排序方式
int cmp1(const void * a,const void * b){
node aa=*((node *)a);
node bb=*((node *)b);
if(aa.a>bb.a){
return 1;
}
else if(aa.a==bb.a){
return 0;
}
else{
return -1;
}
}
调用的模板例子
C语言版
num=100;
node * nodes=(node *)malloc(num*sizeof(node));
qsort(nodes,num,sizeof(node),cmp1);
free(nodes);
C++版
num=100;
node * nodes=new node[num];
qsort(nodes,num,sizeof(node),cmp1);
delete nodes;