qsort()与sort()排序区别 汇总
来源:互联网 发布:tp主人网络能连几个人 编辑:程序博客网 时间:2024/06/07 02:05
一、使用
1.qsort
qsort()是C中的排序函数,其头文件为:#include<stdlib.h>
void qsort( void*base, size_t num, size_t width, int (__cdecl *compare )
int compare (constvoid *elem1, const void *elem2 ) );
qsort(quicksort)主要根据你给的比较条件给一个快速排序,主要是通过指针移动实现排序功能。排序之后的结果仍然放在原来数组中。
参数意义如下:
base:需要排序的目标数组开始地址
num:目标数组元素个数
width:目标数组中每一个元素长度
compare:函数指针,指向比较函数
代码举例:
int num[100];int cmp ( const void *a , const void *b ) { return *(int *)a - *(int *)b; } qsort(num,100,sizeof(num[0]),cmp);
2.sort
sort()函数是C++中的排序函数,其头文件为:#include<algorithm>
sort是qsort的升级版,如果能用sort尽量用sort,使用也比较简单,不像qsort还得自己去写 cmp 函数,只要注明使用的库函数就可以使用.
默认sort排序后是升序,如果想让他降序排列,可以使用自己编的cmp函数。
代码举例:
#include <ctime>#include <algorithm>#include <iostream>using namespace std;int main(){ int val[50]; srand(time(NULL)); for(int i=0; i<50; i++) { val[i] = rand()%100; cout<<val[i]<<" "; } cout<<"排序后输出:"<<endl; sort(val, val+50); for(i=0; i<50; i++) { cout<<val[i]<<" "; } return 0;};
二、性能
比较函数采用的快速排序是一个递归的过程,每次处理一个数列的时候,就从数列中选出一个数,作为划分值,然后在这个数列中,比划分值小的数移动到划分值的左边,比划分值大的数移动到划分值的右边。经过一次这样的处理之后,这个数在最终的已排序的数列的位置就确定了。然后我们把比这个数小和比这个数大的数分别当成两个子数列调用下一次递归,最终获得一个排好序的数列。上面介绍的是基本快速排序的方法,每次把数组分成两分和中间的一个划分值,而对于有多个重复值的数组来说,基本排序的效率较低。集成在C语言库函数里面的的qsort函数,使用三路划分的方法解决这个问题。所谓三路划分,是指把数组划分成小于划分值,等于划分值和大于划分值的三个部分。
三、快排的一些小问题4.快排qsort的第三个参数,那个sizeof,推荐是使用sizeof(s[0])这样,特别是对结构体,往往自己定义2*sizeof(int)这样的会出问题, 用sizeof(s[0)既方便又保险。
5.如果要对数组进行部分排序,比如对一个s[n]的数组排列其从s[i]开始的m个元素,只需要在第一个和第二个参数上进行一些 修改:qsort(&s[i],m,sizeof(s[i]),cmp);
- qsort()与sort()排序区别 汇总
- 排序sort与qsort的区别
- qsort与sort 排序
- sort 与Qsort 排序
- 排序sort与qsort
- [STL] 排序函数sort和qsort的用法与区别
- STL排序函数sort和qsort的用法与区别
- qsort与sort的区别...
- qsort与sort的区别
- qsort与sort的区别
- qsort 与 sort 对结构体排序
- ACM排序算法sort()与qsort()用法
- NYOJ-8 一种排序【sort与qsort】
- qsort与sort结构体排序
- sort与qsort排序方法整理
- qsort与sort函数区别点
- sort与qsort的cmp区别
- HLG 几种简单排序方法 && sort与qsort的区别
- 杂谈:后台进程对Android性能的影响
- linux IO 操作(1)
- LINUX进程调度
- SAP BW创建信息立方体创建的基本过程——视频学习笔记
- 第12周报告1之“完数”
- qsort()与sort()排序区别 汇总
- 利用RFC868协议编写网络对时程序
- Spring的IOC原理
- Ruby之父松本行弘:编程是可以干一辈子的
- SAP BW从SAP R3到BW的数据传输过程图释流向理解——视频学习笔记
- 嵌入式Linux常用命令
- php 计算页面执行时间来优化代码
- Java管道流
- php 何时值为空 empty()=true