qsort对各数据类型的测试样例

//挺有收获的

//qsort Demo

#include <iostream>
#include <cstdlib>	//qsort
#include <cstring>
using namespace std;

int cmp_int(const void *a,const void *b)
{
	return *(int *)a - *(int *)b;
}

int cmp_char(const void *a,const void *b)
{
	return *(char *)a - *(char *)b;
}

int cmp_string(const void *a,const void *b)
{
	return strcmp((char*)a,(char *)b);
}

 struct Node
 {
 	int x,y;
 };

int cmp_struct1(const void *a,const void *b)	//对结构体一级排序(按结构体中的某个关键字排序)
{
	return (*(Node*)a).x > (*(Node*)b).x ? 1 :-1;
}

int cmp_struct2(const void *a,const void *b)	//对结构体二级排序(按照x从小到大比较 ,
{												//当x相等时按y从大到小比较)
	struct Node *c = (Node *)a;
	struct Node *d = (Node *)b;
	if(c->x!=d->x)
		return c->x - d->x;
	else
		return c->y - d->y;
}

int main()
{
	//测试qsort对整数排序
	int arr[6] = {5,3,12,8,1,9};
	qsort(arr,6,sizeof(int),cmp_int);
	for(int i=0;i<6;i++)
	{
		cout<<arr[i]<<" ";
	}
	cout<<endl;

	//测试qsort对char进行排序
	char ch[6] = {'v','a','w','k','z','c'};
	qsort(ch,6,sizeof(char),cmp_char);
	for(int i=0;i<6;i++)
	{
		cout<<ch[i]<<" ";
	}
	cout<<endl;

	//测试qsort对字符串排序
	char str[100][10]= {"abc","cdf","ckg","mvc","java","oracle"};
	qsort(str,6,sizeof(str[0]),cmp_string);
	for(int i=0;i<6;i++)
	{
		cout<<str[i]<<" ";
	}
	cout<<endl; 

	//测试qsort对结构体的一级排序	(按x域的大小排的顺序)
	struct Node node[100] ={
	 	{12,15},{30,25},
	 	{20,8},{28,10},
		{35,5} ,{30,10}
	 };

	 qsort(node,6,sizeof(node[0]),cmp_struct1);
	 for(int i=0;i<6;i++)
	 {
	 	cout<<node[i].x<<" "<<node[i].y<<"\t";
	 }
	 cout<<endl; 

	 //测试qsort对结构体的二级排序
		struct Node node2[100] ={
		{12,15},{30,25},
		{20,16},{20,10},
		{35,5} ,{30,10},
		{32,6},{35,50}
	 };

	 qsort(node2,8,sizeof(node2[0]),cmp_struct2);
	 for(int i=0;i<8;i++)
	 {
	 	cout<<node2[i].x<<" "<<node2[i].y<<"\t";
	 }
	 cout<<endl;
	return 0;
}

时间: 2024-08-24 13:23:20

qsort对各数据类型的测试样例的相关文章

mac book python 编写第一个 fabric 测试样例

最近了解了下fabric ,python 内相似功能 的工具很多,之所以选择 fabric ,第一个主要是它语法不多,上手容易,第二个是 它的语法逻辑,脚本编写更加符合python 的语法习惯,不至于容易跑偏 Fabric is a Python (2.5-2.7) library and command-line tool for streamlining the use of SSH for application deployment or systems administration t

Junit测试样例

对一个加减乘除程序进行检测 文中所有代码见daixiaomao Github 1.首先写一个Calculate类,包括加减乘除法,这里只写最最简单的,主要为了使用Junit 2.下载jar包  junit:链接. 需要注意的是,如果是用4.11及以上版本的话,同时还要下载hamcrest 1.3(下载地址),之前版本不需要 3.导入两个jar包,右键->build path->Configure build path... 4.点击add external jars 按钮找到刚下的两个jar包

tesseract 测试样例

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #dca10d } span.s1 { font: 12.0px ".PingFang SC"; color: #000000 } span.s2 { font: 12.0px "Helvetica Neue" } 该图片的链接为https://raw.githubusercontent.co

针对httptest4net构建elasticsearch集群压力测用例

httptest4net是可以自定义HTTP压力测试的工具,用户可以根据自己的情况编写测试用例加载到httptest4net中并运行测试.由于最近需要对elasticsearch搜索集群进行一个不同情况的测试,所以针对这个测试写了个简单的测试用例. 代码 [Test("ES base")] public class ES_SearchUrlTester : IUrlTester { public ES_SearchUrlTester() { } public string Url {

JAVA之StringBuffer测试样码

这类操作大同小异,但是,高手却能从String,StringBuilder,StringBuffer的应用场景和性能上,分析出其在JAVA编译和JVM上的实现过程差别. 我在CSDN上就看到一个高手分析过. http://blog.csdn.net/clam_clam/article/details/6831345 http://www.cnblogs.com/dolphin0520/p/3778589.html public class StringBufferDemo { public st

oracle 查询测试样题

1. select count(*) from employees where last_name like '_A%'; key:0 2. select count(*) from employees where to_char(hire_date,'YYYY')=1998; select count(*) from employees where hire_date like '%98'; key:23 select to_char(hire_date,'YYYY') from employ

5、Cocos2dx 3.0游戏开发找小三之测试样例简介及小结

重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27186557 测试样例简介 Cocos2d-x 为我们提供了十分丰富的测试样例,这些测试样例是在引擎开发过程中为测试引擎的正确性而编写的代码,同时也是演示引擎各个部分如何使用的良好示例. 打开Cocos2d-x根目录下build文件夹下的cocos2d-win32.vc2012.sln解决方案,设置其中的 cpp-tests 项目为启动项目,成功运行后

ab与jmter 服务器压测对比

引言: 互联网服务压测是非常重要的评价方法,ab,webbench,jmeter等都是业界流行的测试工具,ab和webbench作为shell模式下轻量级的测试工具,jmeter则作为有GUI界面的更高级测试工具,各有特点,ab比webbench功能更多一些,所以这里选择ab和jmeter来做一个对比. [测试环境的安装] [ab] ab就是Apache Benchmark的缩写,顾名思义它是Apache组织开发的一款web压力测试工具,优点是使用方便,统计功能强大. ab作为一款非常流行的压测

Swift - 反射(Reflection)的介绍与使用样例(附KVC介绍)

1,反射(Reflection) 对于C#.Java开发人员来说,肯定都对反射这个概念相当熟悉.所谓反射就是可以动态获取类型.成员信息,同时在运行时(而非编译时)可以动态调用任意方法.属性等行为的特性. 以Java上的两个知名框架(hibernate和spring)为例.hibernate的属性映射就是通过反射来赋值的,spring的bean的创建就是根据配置的class来反射构建的. 2,Objective-C 的 Runtime在使用ObjC开发时很少强调其反射概念,因为ObjC的Runti