C/C++中qsort()以及sort()的用法
最近学弟们问快速排序的比较多,今天自己就做一下总结,快速排序在库函数里面有现成的,不用自己实现,调用一下就可以达到自己想要的结果,掌握以后就可以完全摒弃冒泡和选择了,并且时间复杂度也从O(n*n)提升到O(n*log(n)),
先说C中的qsort():
头文件:#include<stdlib.h>,
调用参数:qsort(排序首地址,需排序元素个数,需排序元素大小,定义排序方式的函数名);
1,对int型数组a[n]排序:
int cmp (const void *a, const void *b)
{
return *(int *)a - *(int *)b;
}//升序
int cmp (const void *a, const void *b)
{
return *(int *)b - *(int *)a;
}//降序
2,对字符串数组a[n]排序:
int cmp (const void *a, const void *b)
{
return strcmp((char *)a, (char *)b);
}//升序
int cmp (const void *a, const void *b)
{
return strcmp((char *)b, (char *)a);
}//降序
3,对结构体数组a[n]排序
struct node
{
int x, y;
};
int cmp (const void *a, const void *b)
{
node *c = (node *)a;
node *d = (node *)b;
return c->x - d->x;
}//按照a[i].x升序排列
int cmp (const void *a, const void *b)
{
node *c = (node *)a;
node *d = (node *)b;
return d->x - c->x;
}//按照a[i].x降序排列
ps:结构体的二级排序只需要再加上一个if条件语句即可。
以上所有的排序函数,使用时都是调用qsort(a, n, sizeof(a[0]), cmp);
C++中的sort函数:其实有时候sort函数比qsort函数还要稍微快那么一点,并且用起来比较方便,所以在这里做一下广告,有排序用sort函数,不能用创造机会也要用!!!
头文件:#include<algothrim>
调用参数:sort(排序首地址,排序末地址,定义排序方式的函数名(可有可无)),如果没有排序方式默认按照升序排列。
现在我们就解决一下如何按照降序方式排列。
1,对int型数组a[n]降序排:
bool cmp (int a, int b)
{
return a > b;
}//降序
2,对string型的数组a[n]排序:
bool cmp (string a, string b)
{
return a > b;
}//降序
3,对结构体型的数组a[n]排序:
bool cmp (node a, node b)
{
return a.x > b.x;
}//降序
ps:如果对结构体进行二级排序,只需在排序函数里面加上if语句。
以上所有的排序函数调用的时候都是用:sort(a, a+n, cmp);
其实强大的stl库给我们提供了辣么多的函数,有一些在这里还是很有用的,比如:
sort(a, a+n, less<数据类型>());//对指定的数据类型升序排
sort(a, a+n, greater<数据类型>());//对指定的数据类型降序排
因为C/C++给我们提供给了太多的数据类型,所以上面只是一些常见的数据类型的排序。
C/C++中qsort()以及sort()的用法的更多相关文章
- qsort()与sort的用法(收藏)
sort()函数是C++中的排序函数其头文件为:#include<algorithm>头文件: qsort()是C中的排序函数,其头文件为:#include<stdlib.h> ...
- STL中find和sort的用法总结
STL算法 STL 提供能在各种容器中通用的算法(大约有70种),如插入.删除.查找.排序等. 许多算法操作的是容器上的一个区间(也可以是整个容器),因此需要两个参数,一个是区间起点元素的迭代器,另一 ...
- python中List的sort方法的用法
python列表排序 简单记一下python中List的sort方法(或者sorted内建函数)的用法. 关键字: python列表排序 python字典排序 sorted List的元素可以是各种东 ...
- 【转】python中List的sort方法(或者sorted内建函数)的用法
原始出处:http://gaopenghigh.iteye.com/blog/1483864 python列表排序 简单记一下python中List的sort方法(或者sorted内建函数)的用法. ...
- hive中order by,sort by, distribute by, cluster by作用以及用法
1. order by Hive中的order by跟传统的sql语言中的order by作用是一样的,会对查询的结果做一次全局排序,所以说,只有hive的sql中制定了order by所有的 ...
- [转载]hive中order by,sort by, distribute by, cluster by作用以及用法
1. order by Hive中的order by跟传统的sql语言中的order by作用是一样的,会对查询的结果做一次全局排序,所以说,只有hive的sql中制定了order by所有的 ...
- C++ sort函数用法
参考文档:http://hi.baidu.com/posinfo/item/dc3e73584c535cc9d2e10c27 C++ sort函数用法 FROM:http://hi.baidu.com ...
- qsort与sort
快排是我们平常敲代码和比赛的时候 经常使用到的方法 qsort是函数库中自带的函数 这是一个标准的快排函数 而sort比qsort更是好用 sort对于不同大小的数组 会使用不 ...
- 引用 qsort与sort的比较
引用 linpder 的 qsort与sort的比较 在C/C++标准库中提供了快速排序的函数qsort():在STL中也提供了sort()排序函数,那么这两个函数哪个快呢?之前与代码-> ...
随机推荐
- 4-EasyNetQ之Logging(黄亮翻译)
EasyNetQ提供了一个Logger接口 IEasyNetQLogger: public interface IEasyNetQLogger { void DebugWrite(string for ...
- python之模块(在命令行当中使用pip install 模块来进行模块的安装)
模块:在程序设计中,为完成某一功能所需的一段程序或子程序:或指能由编译程序.装配程序等处理的独立程序单位. 在我们编程的时候我们如果将所有的文件都放在那个py文件中,我们的py文件会很大,这样也很不好 ...
- Windows系统上release版本程序bug跟踪解决方案-.dmp文件。
使用场景: Win32程序在release模式下编译完成,发送给最终用户使用时,我们的程序有时候也会出现崩溃的情况,这个时候如果能快速定位崩溃原因或提供一些程序崩溃时的状态信息,对我们解决问题将会带来 ...
- 使用线程池优化Echo模型
在上一篇文章中 http://www.cnblogs.com/gosaint/p/8492356.html 我阐述了使用线程为每一个客户端创建一个工作线程来负责任务的执行.但是会存在如 ...
- jetty启动常用命令
1. 启动Jetty Server:运行命令:Java -jar start.jar 指定项目名称启动: java -jar start.jar -Dname=zoush 保持jetty后台 ...
- session,cookie总结
不同的域名生成的session_id是不一样的,(就算是相同的主域,例如:www.test.com, blog.test.com 都不一样); 相同的主域,不同的二级域名,例如www和blog都是不共 ...
- [转]JQuery 如何选择带有多个class的元素
比如下面代码需要选择同时带有这几个class的元素,怎么写? 1 <div class="modal fade in"></div> A: 1. 依次过滤 ...
- Web性能优化 高并发网站解决 单例 已看1
Web性能优化分为服务器端和浏览器端两个方面. 一.浏览器端,关于浏览器端优化,分很多个方面1.压缩源码和图片JavaScript文件源代码可以采用混淆压缩的方式,CSS文件源代码进行普通压缩,JPG ...
- c语言输入数据
比如要求输入一行数据(注意:没有给出输入多少个),并且以空格隔开那么就可以如下进行判断 '; ],temp,i=; while(c!='\n') { scanf("%d%c",&a ...
- ZROI2018普转提day2t1
传送门 分析 我们通过仔细研究不难发现对于一次交换(i,i+1)的操作之后,在i之前的点就不可能跑到i之后,i+1之后的的点也不可能跑到i+1之前,所以这个序列在一次交换之后就相当于被分成了两个部分. ...