前情:因平常写代码是常将比较函数弄混(写好了排序还要确认一下-.-!),还是写篇博客,方便以后查阅

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的使用)的更多相关文章

  1. C++排序函数sort/qsort使用

    问题描述:        C++排序函数sort/qsort的使用 问题解决:           (1)sort函数使用   注:           sort函数,参数1为数组首地址,参数2是数组 ...

  2. C++ 排序函数 sort(),qsort()的使用方法

    想起来自己天天排序排序,冒泡啊,二分查找啊,结果在STL中就自带了排序函数sort,qsort,总算把自己解脱了~ 所以自己总结了一下,首先看sort函数见下表: 函数名 功能描写叙述 sort 对给 ...

  3. linux内核中的排序接口--sort函数

    linux内核中的sort函数,其实跟我们所说的qsort函数很像,我们来看看qsort: qsort 的函数原型是 void qsort(void*base,size_t num,size_t wi ...

  4. 数据结构杂谈(二)简单有趣的地精排序Gnome sort

    很早之前便听说过地精排序的名字,今天自己看来一下,发现这是一种非常简单而且有趣的排序算法. 为什么叫地精排序? 地精排序在2000年由Dr. Hamid Sarbazi-Azad 提出的时候被称作 s ...

  5. python 字典排序 关于sort()、reversed()、sorted()

    一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a ...

  6. 排序命令sort

    Unix和Linux自带的sort命令功能非常强大,其主要功能是对文本内容按不同的方法排序.它不仅可以按一个或多个字段排序,还可以合并文件.使用sort处理一些较大的文件时,可能处理速度会比较慢,但却 ...

  7. [算法] 希尔排序 Shell Sort

    希尔排序(Shell Sort)是插入排序的一种,它是针对直接插入排序算法的改进.该方法又称缩小增量排序,因DL.Shell于1959年提出而得名. 希尔排序实质上是一种分组插入方法.它的基本思想是: ...

  8. 经典排序算法 - 高速排序Quick sort

    经典排序算法 - 高速排序Quick sort 原理,通过一趟扫描将要排序的数据切割成独立的两部分,当中一部分的全部数据都比另外一部分的全部数据都要小,然后再按此方法对这两部分数据分别进行高速排序,整 ...

  9. 排序算法 - 选择排序(selection sort)

    选择排序(Selection sort)跟插入排序一样,也是O(n^2)的复杂度,这个排序方式也可以用我们的扑克牌来解释. 概念 桌面上有一堆牌,也是杂乱无章的,现在我们想将牌由小到大排序,如果使用选 ...

随机推荐

  1. 使用VS2010开发Qt程序的一点经验

    导读 相比于Qt Creator,我更喜欢用VS2010来进行开发.虽然启动时间相对较慢,但是VS下强大的快捷键和丰富的插件,以及使用多年的经验,都让我觉得在开发过程中得心应手.其中最重要的一点是,有 ...

  2. 双系统Ubuntu无法访问windows磁盘分区解决方法

    为了更好的体验各种操作系统,在电脑中安装双系统是很好的选择,但在使用中难免会遇到这样或那样的问题. 最近总是遇到Ubuntu系统下无法访问windows磁盘分区问题,看了系统日志发现是挂载磁盘出问题了 ...

  3. C#设计模式——访问者模式(Visitor Pattern)

    一.概述由于需求的改变,某些类常常需要增加新的功能,但由于种种原因这些类层次必须保持稳定,不允许开发人员随意修改.对此,访问者模式可以在不更改类层次结构的前提下透明的为各个类动态添加新的功能.二.访问 ...

  4. 使用SQLite数据库和Access数据库的一些经验总结

    在我的<Winform开发框架>中,可使用多种数据库作为程序的数据源,除了常规的Oracle数据库.SqlServer.MySql数据库,其中还包括了SQLite数据库.Access数据库 ...

  5. Discuz!X3解读之类引入机制及目录结构

    实例: - /source/class/table/table_forum_faq.php - /source/class/model/model_forum_post.php - /source/p ...

  6. 泛函编程(21)-泛函数据类型-Monoid

    Monoid是数学范畴理论(category theory)中的一个特殊范畴(category).不过我并没有打算花时间从范畴理论的角度去介绍Monoid,而是希望从一个程序员的角度去分析Monoid ...

  7. [moka同学笔记]yii2.0小物件的简单使用(第二种方法)

    1.在widgets/TestWidget.php中 <?php /** * Created by PhpStorm. * User: moka同学 * Date: 2016/08/05 * T ...

  8. LGLAlertView 提示框

    使用与iOS8 以后,只是把系统的UIAlertController进行了封装,省的每次用的时候要写很多的代码.封装后只需要一句代码即可 , deome 地址:https://github.com/l ...

  9. ADO.NET 完整的修改和删除

    namespace 完整修改{ class Program { static void Main(string[] args) { bool has = false; Console.Write(&q ...

  10. Android使用默认样式创建View的几个姿势

    以下内容是分析安卓源码所得: 1: 使用默认样式创建View的方式, 源码文件 Button.Java  注:此文参考http://www.linzenews.com/ 中的内容所写,如侵删! 2: ...