排序算法----调用库函数qsort进行快速排序
注意:数组中可以存储数字,字符,或者结构体都行。
数字:
#include <stdio.h>
#include <stdlib.h> int compInc(const void *a, const void *b)
{
return *(int *)a - *(int *)b;
} int compDec(const void *a, const void *b)
{
return *(int *)b - *(int *)a;
} int main()
{
int a[] = { ,,,, };
int len = ;
int i; printf("递增排序结果:\n");
qsort(a, len, sizeof(a[]), compDec);
for (i = ; i < len; i++)
{
printf("%d ", a[i]);
}
printf("\n"); return ;
}
字符串长度排序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define M 12
#define N 20 int compareInc(const void *a, const void *b)
{
return strlen((char *)a) - strlen((char*)b);//字符串长度比较
} int compareDec(const void *a, const void *b)
{
return strlen((char *)b) - strlen((char*)a);
} int main(void)
{
int i;
char s[M][N] =
{
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
}; qsort(s, M, sizeof(char) * N, compareInc);
for (i = ; i < M; i++)
printf("%s\n", s[i]); printf("\n"); qsort(s, M, sizeof(char) * N, compareDec);
for (i = ; i < M; i++)
printf("%s\n", s[i]); return ;
}
字符串大小排序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define M 12
#define N 20 int compare1(const void *a, const void *b)
{
return *(char *)a - *(char*)b;//字符串大小比较
} int compare2(const void *a, const void *b)
{
return *(char *)b - *(char*)a;
} int main(void)
{
int i;
char s[M][N] =
{
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
}; qsort(s, M, sizeof(char) * N, compare1);
for (i = ; i < M; i++)
printf("%s\n", s[i]); printf("\n"); qsort(s, M, sizeof(char) * N, compare2);
for (i = ; i < M; i++)
printf("%s\n", s[i]); return ;
}
结构体:
#include <stdio.h>
#include <stdlib.h>
#define N 6 typedef struct
{
char name[];
int score; }Student; int compare1(const void *a, const void *b)
{
return ((Student*)a)->score - ((Student*)b)->score;//以结构体的成绩排序
} int compare2(const void *a, const void *b)
{
return *(((Student*)a)->name) - *(((Student*)b)->name);//以结构体的学生姓名排序
} void print(Student s)
{
printf("%-15s : %d\n", s.name, s.score);
} int main()
{
Student s[N] =
{
"Zhang San", ,
"Li Si", ,
"You", ,
"I", ,
"He", ,
"She",
}; int i;
qsort(s, N, sizeof(Student), compare1);
for (i = ; i < N; i++)
{
print(s[i]);
} printf("\n"); qsort(s, N, sizeof(Student), compare2);
for (i = ; i < N; i++)
{
print(s[i]);
} return ;
}
排序算法----调用库函数qsort进行快速排序的更多相关文章
- java排序算法(五):快速排序
java排序算法(五):快速排序 快速排序是一个速度非常快的交换排序算法,它的基本思路很简单,从待排的数据序列中任取一个数据(如第一个数据)作为分界值,所有比它小的元素放到左边.所有比它大的元素放到右 ...
- [Swift]八大排序算法(二):快速排序
排序分为内部排序和外部排序. 内部排序:是指待排序列完全存放在内存中所进行的排序过程,适合不太大的元素序列. 外部排序:指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存 ...
- 【PHP面试题】通俗易懂的两个面试必问的排序算法讲解:冒泡排序和快速排序
又到了金三银四找工作的时间,相信很多开发者都在找工作或者准备着找工作了.一般应对面试,我们无可厚非的去刷下面试题.对于PHPer来说,除了要熟悉自己所做的项目,还有懂的基本的算法.下面来分享下PHP面 ...
- 排序算法——交换排序(冒泡排序、快速排序)(java)
一.冒泡排序 时间复杂度:O(n^2) 公认最慢的排序,每次把最大/最小的放一边,原理: [57,68,59,52] [57,68,59,52] [57,59,68,52] [57,59,52,68] ...
- 排序算法总结(四)快速排序【QUICK SORT】
感觉自己这几篇都是主要参考的Wikipedia上的,快排就更加是了....wiki上的快排挺清晰并且容易理解的,需要注意的地方我也添加上了注释,大家可以直接看代码.需要注意的是,wikipedia上快 ...
- 数据结构和算法(Golang实现)(25)排序算法-快速排序
快速排序 快速排序是一种分治策略的排序算法,是由英国计算机科学家Tony Hoare发明的, 该算法被发布在1961年的Communications of the ACM 国际计算机学会月刊. 注:A ...
- 常用排序算法的python实现和性能分析
常用排序算法的python实现和性能分析 一年一度的换工作高峰又到了,HR大概每天都塞几份简历过来,基本上一天安排两个面试的话,当天就只能加班干活了.趁着面试别人的机会,自己也把一些基础算法和一些面试 ...
- java实现八大排序算法
Arrays.sort() 采用了2种排序算法 -- 基本类型数据使用快速排序法,对象数组使用归并排序. java的Collections.sort算法调用的是归并排序,它是稳定排序 方法一:直接插入 ...
- 【Python】常用排序算法的python实现和性能分析
作者:waterxi 原文链接 背景 一年一度的换工作高峰又到了,HR大概每天都塞几份简历过来,基本上一天安排两个面试的话,当天就只能加班干活了.趁着面试别人的机会,自己也把一些基础算法和一些面试题整 ...
随机推荐
- 谈谈一些有趣的CSS题目(三)-- 层叠顺序与堆栈上下文知多少
开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...
- Hello Web API系列教程——Web API与国际化
软件国际化是在软件设计和文档开发过程中,使得功能和代码设计能处理多种语言和文化习俗,在创建不同语言版本时,不需要重新设计源程序代码的软件工程方法.这在很多成熟的软件开发平台中非常常见.对于.net开发 ...
- C# - 值类型、引用类型&走出误区,容易错误的说法
1. 值类型与引用类型小总结 1)对于引用类型的表达式(如一个变量),它的值是一个引用,而非对象. 2)引用就像URL,是允许你访问真实信息的一小片数据. 3)对于值类型的表达式,它的值是实际的数据. ...
- 工行ICBC_WAPB_B2C支付接口
一. 前期准备 手机银行(WAP)B2C在线支付接口说明V1.0.0.6.doc 手机银行移动生活商户及门户网站js接口API.doc 支付组件ICBCEBankUtil.dll和infosecapi ...
- iOS之解决崩溃Collection <__NSArrayM: 0xb550c30> was mutated while being enumerated.
崩溃提示:Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <CAL ...
- 项目管理_FindBugs的使用
本章将讲述如何在Myeclipse下,使用FindBugs,静态分析工具,无需开发人员费劲就能找出代码中已有的缺陷. 一:Myeclipse下如何安装FindBugs插件 1:FindBugs插件下载 ...
- Windows下MySQL无法启动
问题描述: 从网上下了5.7 的MySQL,在bin目录下执行 start mysqld ,弹出个cmd窗口一闪就没了,也看不清是什么报错.mysqld --install安装了服务,也启动不了. ...
- 【Star CCM+实例】开发一个简单的计算流程.md
流程开发在CAE过程中处于非常重要的地位. 主要的作用可能包括: 将一些经过验证的模型隐藏在流程中,提高仿真的可靠性 将流程封装成更友好的界面,降低软件的学习周期 流程开发实际上需要做非常多的工作,尤 ...
- ubuntu安装ANSYS17.2全过程
本次介绍在Ubuntu kylin1604下安装Ansys 17.2的全部过程. 1 安装文件准备 关于ANSYS的软件安装文件,在网络上可以找到.这里采用SSQ版本的安装文件,如图所示,包含一个名为 ...
- Android快乐贪吃蛇游戏实战项目开发教程-03虚拟方向键(二)绘制一个三角形
该系列教程概述与目录:http://www.cnblogs.com/chengyujia/p/5787111.html 一.绘制三角形 在上一篇文章中,我们已经新建了虚拟方向键的自定义控件Direct ...