qsort
功 能: 使用快速排序例程进行排序
用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *));
各参数:1 待排序数组首地址 2 数组中待排序元素数量 3 各元素的占用空间大小 4 指向函数的指针,用于确定排序的顺序
程序例:
#include <iostream>
using namespace std;
#include <stdlib.h>
#include <string.h>
int compare( const void *a, const void *b);
char * list[5]= {"cat","car","cab","cap","can"};
int main()
pascal 例程
program quicksort;
const
max = 100000;
max = 1000;
type
tlist = array[1..max] of longint;
var
data : tlist;
i : longint;
procedure qsort(var a : tlist);
procedure sort(l,r: longint);
var i,j,x,y: longint;
begin
i:=l; j:=r;
x:=a[(l+r) div 2];
repeat
while a<x do inc(i);
while x<a[j] do dec(j);
if i<=j then
begin
y:=a;a:=a[j];a[j]:=y;
inc(i);dec(x);
end;
until i>j;
if l<j then sort(l,j);
if i<r then sort(i,r);
end;
begin
sort(1,max);
end;
begin
write('Creating ',Max,' random numbers between 1 and 500000');
randomize;
for i:=1 to max do
data:=random(500000);
writeln;
writeln('Sorting...');
qsort(data);
writeln;
for i:=1 to max do
begin
write(data:7);
if (i mod 10)=0 then
writeln;
end;
end.
c/c++
c函数qsort()和bsearch()的用法
使用qsort()排序 并 用 bsearch()搜索是一个比较常用的组合,使用方便快捷。
qsort 的函数原型是void __cdecl qsort ( void *base, size_t num, size_t width, int (__cdecl *comp)(const void *, const void* ) )
其中base是排序的一个集合数组,num是这个数组元素的个数,width是一个元素的大小,comp是一个比较函数。
比如:对一个长为1000的数组进行排序时,int a[1000]; 那么base应为a,num应为 1000,width应为 sizeof(int),comp函数随自己的命名。
qsort(a,1000,sizeof(int ),comp);
其中comp函数应写为:
int comp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
是对一个二维数组的进行排序:
int a[1000][2]; 其中按照a[0]的大小进行一个整体的排序,其中a[1]必须和a[0]一起移动交换。
qsort(a,1000,sizeof(int)*2,comp);
int comp(const void *a,const void *b)
{
return ((int *)a)[0]-((int *)b)[0];
}
对字符串进行一个排序:
char a[1000][20];
qsort(a,1000,sizeof(char)*20,comp);
int comp(const void *a,const void *b
{
return strcmp((char *)a,(char *)b);
}
对一个结构体进行排序:
typedef struct str
{
char str1[11];
char str2[11];
}str,*stri;
str strin[100001]=;
int compare(const void *a,const void *b)
{
return strcmp( ((str*)a)->str2 , ((str*)b)->str2 );
}
qsort(strin,total,sizeof(str),compare);
程序例:
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
#define N 8
int compare(const void *a,const void *b);
void main()
{
char s[8][10]={"January","February","March","April","May","June","July","September"};
int i;
qsort(s,8,sizeof(char)*10,compare);
for(i=0;i<N;i++)
cout<<s<<endl;
}
int compare(const void *a,const void *b)
{
if(strlen((char *)a)!=strlen((char *)b))
return strlen((char *)a)-strlen((char*)b);
return (strcmp((char *)a,(char *)b));
}//vc++ 6.0
// VS2008编译通过,具有代表性的例子
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int compare(const void *arg1,const void *arg2);
int main(int argc,char **argv)
{
int i;
argv++;
argc--;
qsort((void *)argv,(size_t)argc,sizeof(char *),compare);
for(i=0;i<argc;++i)
{
printf("%s ",argv);
printf("/n");
}
}
int compare(const void *arg1,const void *arg2)
{
return _stricmp(*(char **)arg1,*(char **)arg2);
}
在运行输入cmd,在qsort.exe 参数1 参数2
将会排序
分享到:
相关推荐
C语言中的`qsort`函数是用于对内存块中的元素进行排序的标准库函数,它包含在`<stdlib.h>`头文件中。`qsort`函数的使用非常灵活,可以处理不同数据类型的数据,包括基本类型如`int`、`char`、`double`以及结构体等...
qsort 函数详细介绍 qsort 函数是 C 语言标准库中的一种排序算法,用于对数组进行排序。它是快速排序(Quicksort)算法的一种实现,能够高效地对数组进行排序。下面是 qsort 函数的详细介绍。 一、qsort 函数的...
微软的QSort算法是针对C语言标准库中的`qsort`函数的一种优化实现。`qsort`函数在C语言中被广泛用于对数组进行快速排序,它是一个通用的排序算法,适用于各种数据类型。在微软的实现中,可能对性能进行了特定的优化...
在C语言中,`qsort`函数是标准库`<stdlib.h>`中提供的一种通用排序算法,它能够帮助我们对数组进行快速排序。本篇将深入探讨`qsort`的使用,包括其基本原理、参数解析、不同数据类型的排序以及在实际编程中的应用...
快速排序库函数qsort的调用细则 快速排序库函数qsort是C标准库中的一种排序算法,用于对数组进行排序。qsort函数包含在头文件中,需要在函数头部加上#include以便调用。qsort函数有四个参数,分别是参与排序的数组...
本文主要讨论两种内置的排序函数:`qsort()` 和 `sort()`。`qsort()` 函数来源于C标准库 `<cstdlib>`,而`sort()` 是C++ STL(标准模板库)中的成员,位于 `<algorithm>` 头文件内。 `qsort()` 函数是一种通用的...
标题中的“qsort测试”指的是一个关于C++标准库中的`qsort`函数的测试程序。这个测试可能包含了对`qsort`函数不同用法的验证,以及与C++标准库中的`std::sort`以及C运行时库(CRT)中的排序函数进行的性能比较。`qsort...
### VC中qsort源代码解析 #### 知识点概览 在VC(Visual C++)环境中,`qsort`函数是C/C++标准库中用于数组排序的关键函数之一,其内部实现采用了快速排序算法。本文将深入分析VC中`qsort`源代码的核心逻辑、算法...
本文主要探讨如何使用C语言中的`qsort`函数对一个包含多个元素的结构体数组进行排序,并以二维数组为例,详细介绍如何根据其中的一维进行排序。 #### 二、基础知识回顾 1. **结构体**: - 结构体是一种用户自定义...
C语言qsort函数算法性能测试 C语言qsort函数是一种高效的排序算法,广泛应用于各个领域。了解qsort函数的算法性能对程序设计和优化具有重要意义。本文将通过实验测试,深入探讨C语言qsort函数的算法性能,并对其...
qsort 使用法和具体举例说明 qsort 是一种快速排序算法,广泛应用于 C 语言编程中。它可以对数组中的元素进行排序,包括整数、字符、浮点数、结构体等类型的元素。下面是 qsort 使用法和具体举例说明: 函数原型 ...
### qsort函数详解及其在ACM竞赛中的应用 #### 一、qsort函数概述 `qsort`函数是C语言标准库中用于通用数组排序的一个强大工具,它使用快速排序算法,提供了高度灵活的排序机制。`qsort`的原型在`<stdlib.h>`...
### 七种qsort排序方法详解 #### 一、引言 `qsort`是C语言标准库中的一个函数,用于对数组进行快速排序。它提供了极大的灵活性,允许用户自定义比较函数来处理不同类型的数据。本文将详细介绍七种常见的`qsort`排序...
在C语言中,`qsort`函数是标准库`stdlib.h`中提供的一种通用排序接口,用于实现快速排序或者其他类型的排序。 `qsort`函数的原型如下: ```c void qsort(void *base, size_t nel, size_t width, int (*compar)...
### qsort函数详解与应用实例 #### 一、qsort函数概述 `qsort`是C语言中的标准库函数,用于对数组中的元素进行排序,它位于`<stdlib.h>`头文件中。此函数适用于各种数据类型,不仅限于基本类型如`int`或`double`,...
函数名称: qsort <br>函数原型: void qsort(void *base, size_t nelem, size_t width, int (*fcmp)(const void *,const void *) <br>函数功能: 使用C.A.R.Hoare排序法对数组base进行排序 <br>函数返回: ...
C 库函数 qsort 七种使用方法示例 本文将对 C 库函数 qsort 进行详细的介绍,并提供七种使用方法示例,帮助 C 语言初学者快速掌握 qsort 函数的使用方法。 一、对 int 类型数组排序 qsort 函数可以对 int 类型...
《深入解析qsort:超越日常应用的编程智慧》 在编程的世界里,排序算法是基础且重要的组成部分。本文将深入探讨C语言中的`qsort`函数,它是一个强大的通用排序工具,尽管对于日常简单编程任务可能显得有些复杂,但...
qsort的七种用法