排序(qsort sort的使用)
前情:因平常写代码是常将比较函数弄混(写好了排序还要确认一下-.-!),还是写篇博客,方便以后查阅
C语言qsort函数对int类型数组排序:
#include "stdio.h"
#include "stdlib.h"
#define N 1005
int a[N]; //此比较函数让数组从小到大排列
int cmp(const void *a,const void *b){ return *(int *)a-*(int *)b; } int main()
{
int i,n;
scanf("%d",&n);
for(i=; i<n; i++) scanf("%d",&a[i]);
qsort(a,n,sizeof(a[]),cmp);
for(i=; i<n; i++) printf("%d ",a[i]);
printf("\n");
return ;
}
C++中sort函数对int类型数组排序:
#include "cstdio"
#include "algorithm"
using namespace std;
#define N 1005
int a[N];
//sort函数不写比较函数的话,默认是从小到大排序的 int main()
{
int i,n;
scanf("%d",&n);
for(i=; i<n; i++) scanf("%d",&a[i]);
sort(a,a+n); //将地址从a开始到a+n(不包括地址a+n对应元素)的所有数据进行排序
for(i=; i<n; i++) printf("%d ",a[i]);
printf("\n");
return ;
}
C语言qsort函数对char类型数组排序:
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#define N 1005
char str[N]; //此比较函数让数组从小到大排列
int cmp(const void *a,const void *b){ return *(char *)a-*(char *)b; } int main()
{
int len;
scanf("%s",str);
len = strlen(str);
qsort(str,len,sizeof(str[]),cmp);
puts(str);
return ;
}
C++中sort函数对char类型数组排序:
#include "cstdio"
#include "cstring"
#include "algorithm"
using namespace std;
#define N 1005
char str[N]; int main()
{
int len;
scanf("%s",str);
len = strlen(str);
sort(str,str+len); //默认也是按ascll码从小到大排序
puts(str);
return ;
}
C语言qsort函数对double类型数组排序:
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#define N 1005
double a[N]; //此比较函数让数组从小到大排列
int cmp(const void *a,const void *b)
{
return *(double *)a > *(double *)b ? :-;
} int main()
{
int i,n;
scanf("%d",&n);
for(i=; i<n; i++) scanf("%lf",&a[i]);
qsort(a,n,sizeof(a[]),cmp);
for(i=; i<n; i++) printf("%.1lf ",a[i]);
printf("\n");
return ;
}
C++中sort函数对double类型数组排序:
#include "cstdio"
#include "cstring"
#include "algorithm"
using namespace std;
#define N 1005
double a[N]; //从小到大排序
bool cmp(double a,double b)
{
return a<b;
} int main()
{
int i,n;
scanf("%d",&n);
for(i=; i<n; i++) scanf("%lf",&a[i]);
sort(a,a+n,cmp);
for(i=; i<n; i++) printf("%.1lf ",a[i]);
printf("\n");
return ;
}
C语言中qsort函数对结构体二级排序:
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#define N 1005 typedef struct
{
int x,y;
}Point;
Point a[N];
//先按结构体中x从小到大排序,x相等的按y从大到小排序
int cmp(const void *a,const void *b)
{
Point *c = (Point *)a;
Point *d = (Point *)b;
if(c->x != d->x)
return c->x - d->x;
return d->y - c->y;
}
int main()
{
int i,n;
scanf("%d",&n);
for(i=; i<n; i++) scanf("%d %d",&a[i].x,&a[i].y);
qsort(a,n,sizeof(a[]),cmp);
for(i=; i<n; i++) printf("%d %d\n",a[i].x,a[i].y);
return ;
}
C++中sort函数对结构体二级排序:
#include "cstdio"
#include "cstring"
#include "algorithm"
using namespace std;
#define N 1005 typedef struct
{
int x,y;
}Point;
Point a[N]; //结构体中按x从小到大排序,x相等的按y从大到小排序
bool cmp(Point a,Point b)
{
if(a.x!=b.x)
return a.x < b.x;
return a.y > b.y;
} int main()
{
int i,n;
scanf("%d",&n);
for(i=; i<n; i++) scanf("%d %d",&a[i].x,&a[i].y);
sort(a,a+n,cmp);
for(i=; i<n; i++) printf("%d %d\n",a[i].x,a[i].y);
return ;
}
C语言qsort函数对字符串数组排序:
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#define N 1005 typedef struct
{
int data;
char s[N];
}TT; TT str[N];
//对字符串数组按从小到大排序
int cmp(const void *a,const void *b)
{
TT *c = (TT *)a;
TT *d = (TT *)b;
return strcmp(c->s,d->s); //strcmp(s1,s2),若s1>s2,return 1;若s1<s2,return -1;
} int main()
{
int i,n;
scanf("%d",&n);
for(i=; i<n; i++) scanf("%s",str[i].s);
qsort(str,n,sizeof(str[]),cmp);
for(i=; i<n; i++)
puts(str[i].s);
return ;
}
C++中sort函数对字符串数组排序:
#include "cstdio"
#include "cstring"
#include "algorithm"
using namespace std;
#define N 1005 typedef struct
{
int data;
char s[N];
}TT; TT str[N];
//对字符串数组按从小到大排序
bool cmp(TT a,TT b) //cmp只返回真或假
{
return strcmp(a.s,b.s)==-; //strcmp(s1,s2),若s1>s2,return 1;若s1<s2,return -1;
} int main()
{
int i,n;
scanf("%d",&n);
for(i=; i<n; i++) scanf("%s",str[i].s);
sort(str,str+n,cmp);
for(i=; i<n; i++)
puts(str[i].s);
return ;
}
排序(qsort sort的使用)的更多相关文章
- C++排序函数sort/qsort使用
问题描述: C++排序函数sort/qsort的使用 问题解决: (1)sort函数使用 注: sort函数,参数1为数组首地址,参数2是数组 ...
- C++ 排序函数 sort(),qsort()的使用方法
想起来自己天天排序排序,冒泡啊,二分查找啊,结果在STL中就自带了排序函数sort,qsort,总算把自己解脱了~ 所以自己总结了一下,首先看sort函数见下表: 函数名 功能描写叙述 sort 对给 ...
- linux内核中的排序接口--sort函数
linux内核中的sort函数,其实跟我们所说的qsort函数很像,我们来看看qsort: qsort 的函数原型是 void qsort(void*base,size_t num,size_t wi ...
- 数据结构杂谈(二)简单有趣的地精排序Gnome sort
很早之前便听说过地精排序的名字,今天自己看来一下,发现这是一种非常简单而且有趣的排序算法. 为什么叫地精排序? 地精排序在2000年由Dr. Hamid Sarbazi-Azad 提出的时候被称作 s ...
- python 字典排序 关于sort()、reversed()、sorted()
一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a ...
- 排序命令sort
Unix和Linux自带的sort命令功能非常强大,其主要功能是对文本内容按不同的方法排序.它不仅可以按一个或多个字段排序,还可以合并文件.使用sort处理一些较大的文件时,可能处理速度会比较慢,但却 ...
- [算法] 希尔排序 Shell Sort
希尔排序(Shell Sort)是插入排序的一种,它是针对直接插入排序算法的改进.该方法又称缩小增量排序,因DL.Shell于1959年提出而得名. 希尔排序实质上是一种分组插入方法.它的基本思想是: ...
- 经典排序算法 - 高速排序Quick sort
经典排序算法 - 高速排序Quick sort 原理,通过一趟扫描将要排序的数据切割成独立的两部分,当中一部分的全部数据都比另外一部分的全部数据都要小,然后再按此方法对这两部分数据分别进行高速排序,整 ...
- 排序算法 - 选择排序(selection sort)
选择排序(Selection sort)跟插入排序一样,也是O(n^2)的复杂度,这个排序方式也可以用我们的扑克牌来解释. 概念 桌面上有一堆牌,也是杂乱无章的,现在我们想将牌由小到大排序,如果使用选 ...
随机推荐
- 【转】http-equiv="X-UA-Compatible" 设置IE浏览器兼容模式详解
文件兼容性用于定义让IE如何编译你的网页.此文件解释文件兼容性,如何指定你网站的文件兼容性模式以及如何判断一个网页该使用的文件模式. 前言 为了帮助确保你的网页在所有未来的IE版本都有一致的外观,IE ...
- Unity3D读取模型文件自动生成AnimatorController简单实例
前几天接到一个任务,做一个导入.控制模型动画的工具类,没有太具体的要求,于是就自行思考实际需求,最终根据宣雨松老师的一篇博客,自己规范了一下写了一个工具类.相关工具代码及测试用例已上传至Github. ...
- sql: sq_helptext
--查看表生成脚本 sql server --- '\r'是回车,'\n'是换行 /t相当于键盘的Tab键 --- 操作系统的不同,换行符操也不同:/r Mac /n Unix/Lin ...
- json format validator
http://la5u.org/archives/542 http://stedolan.github.io/jq/download/ https://linuxtoy.org/archives/jq ...
- java之StringBuilder类详解
StringBuilder 非线程安全的可变字符序列 .该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍).如果可能,建议优先采用该类,因为在 ...
- Treap树的基础知识
原文 其它较好的的介绍:堆排序 AVL树 树堆,在数据结构中也称Treap(事实上在国内OI界常称为Traep,与之同理的还有"Tarjan神犇发明的"Spaly),是指有一个随 ...
- ex_KMP--Theme Section
题目网址: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=110060#problem/B Description It's time f ...
- Javaweb上下文监听者ServletContextListener
一个监听类,不是一个servlet或JSP,它能监听ServletContext一生中的两个关键事件:初始化(创建)和撤销.这个类实现了javax.servlet.ServletContextList ...
- mysql并发insert deadlock分析以及解决,无delete/update/for update
关于并发insert操作发生deadlock这个情况,一直有很多争议,而且网上的帖子所有的例证和模拟其实不一定反映了真实的情况,例如:https://www.percona.com/blog/2012 ...
- [js开源组件开发]js文本框计数组件
js文本框计数组件 先上效果图: 样式可以自行调整 ,它的功能提供文本框的实时计数,并作出对应的操作,比如现在超出了,点击下面的按钮后,文本框会闪动两下,阻止提交.具体例子可以点击demo:http: ...