C语言函数模板
来源:互联网 发布:北京plc编程培训学校 编辑:程序博客网 时间:2024/05/01 00:22
(1)n的平方的sort:
void sort(struct point *ps,int n){//按Y升序,相同按X升序
int i,j;
struct point temp;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++){
if((ps+i)->y>(ps+j)->y){
temp=*(ps+i);
*(ps+i)=*(ps+j);
*(ps+j)=temp;
}
else if((ps+i)->y==(ps+j)->y){
if((ps+i)->x>(ps+j)->x){
temp=*(ps+i);
*(ps+i)=*(ps+j);
*(ps+j)=temp;
}
}
}
}
sort(node,n);
(2)min函数:
double min(double a,double b){
if(a<=b)
return a;
if(a>b)
return b;
}
min(a,b);
八种qsort排序方法
PS:
其中的qsort函数包含在<stdlib.h>的头文件里,strcmp包含在<string.h>的头文件里
<均采用从小到大排序>
一、对int类型数组排序
int num[100];
Sample:
int cmp ( const void *a , const void *b )
{
return *(int *)a - *(int *)b;
}
qsort(num,100,sizeof(num[0]),cmp);
二、对char类型数组排序(同int类型)
char word[100];
Sample:
int cmp( const void *a , const void *b )
{
return *(char *)a - *(int *)b;
}
qsort(word,100,sizeof(word[0]),cmp);
三、对double类型数组排序(特别要注意)
double in[100];
int cmp( const void *a , const void *b )
{
return *(double *)a > *(double *)b ? 1 : -1;
}
qsort(in,100,sizeof(in[0]),cmp);
四、对结构体一级排序
struct In
{
double data;
int other;
}s[100]
//按照data的值从小到大将结构体排序,关于结构体内的排序关键数据data的类型可以很多种,参考上面的例子写
int cmp( const void *a ,const void *b)
{
return (*(In *)a)->data > (*(In *)b)->data ? 1 : -1;
}
qsort(s,100,sizeof(s[0]),cmp);
五、对结构体二级排序
struct In
{
int x;
int y;
}s[100];
//按照x从小到大排序,当x相等时按照y从大到小排序
int cmp( const void *a , const void *b )
{
struct In *c = (In *)a;
struct In *d = (In *)b;
if(c->x != d->x) return c->x < d->x;
else return d->y < c->y;
}
qsort(s,100,sizeof(s[0]),cmp);
六、对字符串进行排序
struct In
{
int data;
char str[100];
}s[100];
//按照结构体中字符串str的字典顺序排序
int cmp ( const void *a , const void *b )
{
return strcmp( (*(In *)a)->str , (*(In *)b)->str );
}
qsort(s,100,sizeof(s[0]),cmp);
七、计算几何中求凸包的cmp
int cmp(const void *a,const void *b) //重点cmp函数,把除了1点外的所有点,旋转角度排序
{
struct point *c=(point *)a;
struct point *d=(point *)b;
if( calc(*c,*d,p[1]) < 0) return 1;
else if( !calc(*c,*d,p[1]) && dis(c->x,c->y,p[1].x,p[1].y) < dis(d->x,d->y,p[1].x,p[1].y)) //如果在一条直线上,则把远的放在前面
return 1;
else return -1;
}
八、数组作为下标,对结构体进行排序
int cmp( const void *a ,const void *b){
double temp = ((struct point*)a)->y-((struct point*)b)->y;
if(temp>0)
return 1;
else if(temp==0)
return 0;
else
return -1;
}
qsort(tmp,pos,sizeof(tmp[0]),cmp);(tmp为数组)
- C语言函数模板
- C语言实现函数模板
- C语言中实现模板函数小结
- 在 C 语言中实现模板函数的方法
- c语言模拟模板的函数的方法
- 在 C 语言中实现模板函数的方法
- 【转】在C语言中实现模板函数的方法
- 在c语言中实现函数模板的例子
- 在 C 语言中实现模板函数的方法
- C语言不支持函数模版和类模板的使用
- C语言快排模板 qsort();函数应用
- C语言快速排序模板大全(qsort函数)
- c语言编程文件和函数说明模板
- C语言测试一个函数运行时间的模板
- C 语言 模板
- 单片机C语言模板
- 高精度c语言模板
- 【c/c++】函数模板和模板函数
- jQuery ajax 实现下拉框 二级联动
- 计算机管理之开启防火墙同时启用远程桌面
- css之clip
- 通过adb打开Android系统中data文件夹下的app,database的的文件
- centos下安装slurm
- C语言函数模板
- phoenix复制表
- 深入讲解java中method在class中的组织形式
- 大学==大不了毕业再学?
- aqtest 004
- go printf使用
- 修改名字
- Swift: 消除警告-kCFStreamNetworkServiceTypeVoIp is deprecated.........
- 给初学者的RxJava2.0教程(二)