STL:快速排序模板qsort(转载)

                 qsort 

用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *));   

各参数:1 待排序数组首地址 2 数组中待排序元素数量 3 各元素的占用空间大小 4 指向函数的指针

     int fcmp ( const void *a , const void *b )

    { return *(int *)a - *(int *)b; }

    (注:当fcmp返回-1,则a会被排在b的前面,返回1,则b会被排在a的前面,返回0说明a==b)

例程:(仅显示返回值,且默认从小到大排序)

一、对int类型数组排序

  return *(int *)a - *(int *)b;

二、对char类型数组排序

   return *(char *)a - *(int *)b;

三、对double类型数组排序(严格上说double元素不可能相等)

   return *(double *)a > *(double *)b ? 1 : -1;

四、对结构体一级排序

  令有结构体:struct In { double data; int other; }s[100]

  return (*(In *)a).data > (*(In *)b).data ? 1 : -1; 

五、对结构体二级排序

  令有结构体:struct In { int x; int y; }s[100];

  //按照x从小到大排序,当x相等时按照y从大到小排序

  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;

六、对字符串进行排序

  return strcmp( *(char *)a , *(char *)b);

  参考地址:http://www.cnblogs.com/syxchina/archive/2010/07/29/2197382.html

最近会多学一点模板和STL,我发现STL真是一个解放双手的东西,面向对象果然是一个好东西!

时间: 2024-08-05 01:54:58

STL:快速排序模板qsort(转载)的相关文章

poj2388 快速排序 模板题

/** \brief poj2388 * * \param date 2014/8/5 * \param state AC * \return memory time * qsort 784K 110ms * ksort 780K 172ms */ #include <iostream> #include <fstream> #include <cstring> #include <algorithm> using namespace std; const

Angular系列---- AngularJS入门教程03:AngularJS 模板(转载)

是时候给这些网页来点动态特性了——用AngularJS!我们这里为后面要加入的控制器添加了一个测试. 一个应用的代码架构有很多种.对于AngularJS应用,我们鼓励使用模型-视图-控制器(MVC)模式解耦代码和分离关注点.考虑到这一点,我们用AngularJS来为我们的应用添加一些模型.视图和控制器. 请重置工作目录: git checkout -f step-2 我们的应用现在有了一个包含三部手机的列表. 步骤1和步骤2之间最重要的不同在下面列出.,你可以到GitHub去看完整的差别. 视图

STL 队列模板实现

C++ Prime确实有点难啊!看了好久都没弄清楚,一点点慢慢来. #include <iostream> #include <string> #include <cstdio> template <class Type> class Queue; //function template declaration must precede friend declaration in QueueItem template <class T> std:

Angular系列----AngularJS入门教程01:AngularJS模板 (转载)

是时候给这些网页来点动态特性了——用AngularJS!我们这里为后面要加入的控制器添加了一个测试. 一个应用的代码架构有很多种.对于AngularJS应用,我们鼓励使用模型-视图-控制器(MVC)模式解耦代码和分离关注点.考虑到这一点,我们用AngularJS来为我们的应用添加一些模型.视图和控制器. 请重置工作目录: git checkout -f step-2 我们的应用现在有了一个包含三部手机的列表. 步骤1和步骤2之间最重要的不同在下面列出.,你可以到GitHub去看完整的差别. 视图

Angular系列----AngularJS入门教程02:静态模板(转载)

为了说明angularJS如何增强了标准HTML,我们先将创建一个静态HTML页面模板,然后把这个静态HTML页面模板转换成能动态显示的AngularJS模板. 在本步骤中,我们往HTML页面中添加两个手机的基本信息,用以下命令将工作目录重置到步骤1. git checkout -f step-1 请编辑app/index.html文件,将下面的代码添加到index.html文件中,然后运行该应用查看效果. app/index.html <ul> <li> <span>

《JAVA与模式》之模板模式(转载)

模板方法在servlet中的应用:http://www.cnblogs.com/java-my-life/archive/2012/05/14/2495235.html 原文出处:http://blog.csdn.net/zhengzhb/article/details/7405608   定义:定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤. 类型:行为类模式 类图: 事实上,模版方法是编程中一个经常用到的模式.先来看一个例子,

WebStorm: 更改默认的文件模板(转载)

WebStorm: 更改默认的文件模板(转载) 27 AUGUST 2015 在使用WebStorm进行Web开发时,新建HTML文件后,WebStorm会根据默认模板在该HTML文件中填充以下内容: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <b

STL(标准模板库)理论基础,容器,迭代器,算法

基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间. STL的从广义上讲分为三类:algorithm(算法).container(容器)和iterator(迭代器),容器和算法通过迭代器可以进行无缝地连接.几乎所有的代码都采 用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会.在C++标准中,STL被组织为下面的13

STL与模板

一.如何进行泛型编程    C/C++ 是一种静态编程语言,必须需要把代码翻译成可执行的二进制可执行程序然后在运行,一旦编译好之后就不能再变了(数据类型也就必须确定下无法更改,因此要为每一种数据类型编写一份算法,工程量巨大). C++提供了模板的编程方法来解决泛型编程的问题,它的解决思路是,程序员先编写好一份"套路"代码,然后在调用时编译器根据调用时的参数再为这种数据类型生成一份属于它的代码. C语言中也有类似的模板,比如快速排序. void qsort(void *base, siz