linux中qsort的使用

函数原型

#include <stdlib.h>

void qsort(void *base, size_t nmemb, size_t size,  int(*compar)(const void *, const void *));

参数说明:

base:排序数组的起始地址

nmemb:要排序的元素的个数

size:单个元素的大小

compar:用户自定义的比较两个元素大小的方法。

int(*compar)(const void *p1, const void *p2)函数说明

升序排列:p1大于p2时返回正数,相等返回0,小于返回负数

降序排列:p1大于p2时返回负数,相等返回0,小于返回正数

eg:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

static int
cmp(const void *p1, const void *p2)
{
	return *(int*)p1 - *(int*)p2;
}

int
main(int argc, char *argv[])
{
	int j;
	int s[10]={1,3,5,7,9,2,4,6,8,0};

	qsort(&s[0], 10, sizeof(s[0]), cmp);

	for (j = 0; j < 10; j++)
		printf("%d\n", s[j]);
	exit(EXIT_SUCCESS);
}

运行结果

时间: 2024-09-05 13:42:34

linux中qsort的使用的相关文章

linux中常用时间和字符串之间相互转化

在Linux中经常会遇到时间和字符串相互转化的情形,有两个函数专门对应相应的转化. 1.时间转字符串函数strftime 函数原型:size_t strftime(char *s,size_t maxsize,char *format,conststruct tm *timeptr) strftime函数对timeptr指向的tm结构所代表的时间和日期进行格式编排,其结果放在字符串s中.该字符串的长度被设置为(最少)maxsize个字符.格式字符串format用来对写入字符串的字符进行控制,它包

详解 linux中的grub

grub是什么: grub是引导操作系统的程序,它会根据自己的配置文件,去引导内核,当内核被加载到内存以后, 内核会根据grub配置文件中的配置,找到根分区所使用的文件系统对应的驱动,通过根分区文件系统 对应的驱动,挂载根分区,从而达到启动操作系统的目的. 在了解grub以前,请先大体上了解一下centos5/6的启动过程,然后再理解grub就更容易了, 还记的我们以前总结过的centos5系统启动流程吗,如下图,此处我们重点讨论下图红框中的步骤. centos5/6中使用grub作为bootl

Linux中的crontab命令用法

Crontab 在linux中,crontab的用来设置定期执行指定的命令,我们可以用它来指定一些需要重复的事情,Linux系统的用户只需将想要定期要执行的命令序列加到crontab文件中,操作系统即会按用户配置的时间执行这些命令序列.向crontab文件里添加指令之前,需要检查下crontab服务是否已启动和是否开机自动启动: [查看状态] Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的 可以使用service crond status进行查看状态,下图是我在ce

centos linux中怎么查看和修改计算机名/etc/sysconfig/network

centos linux中怎么查看和修改计算机名 查看计算机名:在终端输入hostname 修改的话 hostname +计算机名(重启后失效)要永久修改的话要修改配置文件/etc/sysconfig/network修改hostname=你要改的名字

Linux中的select,poll,epoll模型

Linux中的 select,poll,epoll 都是IO多路复用的机制. select select最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监视多个文件描述符的数组,当select()返回后,该数组中就绪的文件描述符便会被内核修改标志位,使得进程可以获得这些文件描述符从而进行后续的读写操作.select目前几乎在所有的平台上支持,其良好跨平台支持也是它的一个优点,事实上从现在看来,这也是它所剩不多的优点之一.select的一个缺点在于单个进程能够监视的文件描

linux中vim编辑器各种常用命令及用法

linux中vim编辑器的常用命令以及用法(注意严格区分大小写以及中英文): vim编辑器有三种模式,分别是:编辑模式,输入模式以及末行模式. 模式转换: 编辑模式>>>输入模式: i:在光标所在字符前面,转为输入模式(即转完后在光标所在字符前输入):                      I:在光标所在行的行首,转为输入模式(即转完后在行首输入,不包括行首空                         白) a:在光标所在字符后,转为输入模式(即转完后在光标所在字符后面输入):

Linux中添加用户、删除用户时新手可能遇到的问题

Linux中添加用户.删除用户时新手可能遇到的问题  1.创建新用户后切换到新用户:No directory, logging in with HOME=/     添加用户     #sudo useradd -m -s /bin/bash -g group loginname     -m 创建home目录 (不加这个要手动添加目录,不然会出现No directory,Logging in with HOME=/ )     -s /bin/bash 使用bash( 默认为 /bin/sh

理解Linux中的load Averges

一.什么是load average? linux系统中的Load对当前CPU工作量的度量 (WikiPedia: the system load is a measure of the amount of work that a computer system is doing).也有简单的说是进程队列的长度. Load Average 就是一段时间 (1 分钟.5分钟.15分钟) 内平均 Load . 我们可以通过系统命令"w"查看当前load average情况 [[email p

Linux中删除文件,磁盘空间未释放问题追踪

在客户使用我们产品后,发现一个问题:在删除了文件后,磁盘空间却没有释放.是有进程在打开这个文件,还是其他情况?我们一起来看看一下两个场景 一. 场景一:进程打开此文件 当一个文件正在被一个进程使用时,用户删除此文件,文件只会从目录结构中删除,但并没有从磁盘删除.当使用这个文件的进程结束后,文件才会真正的从磁盘删除,释放占有的空间. 我们发现剩余磁盘空间比较少时,回去删除一些大的临时文件或者log文件,如果删除之后会发现磁盘空间并未减少,那么可以通过"lsof"命令去查看正在使用该文件的