> Linux Reviews > man >

qsort

qsort


  1. qsort.3.man


1. qsort.3.man

Manpage of QSORT

QSORT

Section: Руководство программиста Linux (3)
Updated: 2009-09-15
Index Return to Main Contents
 

ИМЯ

qsort - сортировка массива  

ОБЗОР

#include <stdlib.h>

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

ОПИСАНИЕ

Функция qsort() сортирует массив из nmemb размером size. Аргумент base указывает на начало массива.

Содержимое массива сортируется в соответствии с функцией сравнения, на которую ссылается compar, вызываемой вместе с двумя аргументами, которые ссылаются на сравниваемые объекты.

Функция сравнения должна вернуть целое, меньшее, равное и большее нуля для случаев, когда первый аргумент меньше, равен или больше второго соответственно. Если оба элемента сравнения равны, порядок их сортировки в массиве не будет определен.  

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

Функция qsort() ничего не возвращает.  

СООТВЕТСТВИЕ СТАНДАРТАМ

SVr4, 4.3BSD, C89, C99.  

ЗАМЕЧАНИЯ

Для использования compar подходят библиотечные процедуры, включая alphasort(3) и versionsort(3). Для сравнения C-строк в качестве функции сравнения можно использовать strcmp(3), как это указано ниже.  

ПРИМЕР

Для примера использования смотрите пример, указанный в bsearch(3).

Еще один пример программы, сортирующей строки, переданные в качестве аргументов через командную строку:

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

static int
cmpstringp(const void *p1, const void *p2)
{
    /* Аргументами данной функции являются "pointers to
       pointers to char", однако аргументами strcmp(3)
       являются "pointers to char", так что здесь происходит
       преобразование и разыменовывание ссылок */

    return strcmp(* (char * const *) p1, * (char * const *) p2);
}

int
main(int argc, char *argv[])
{
    int j;

    if (argc < 2) {
        fprintf(stderr, "Usage: %s <string>...
", argv[0]); exit(EXIT_FAILURE); } qsort(&argv[1], argc - 1, sizeof(char *), cmpstringp); for (j = 1; j < argc; j++) puts(argv[j]); exit(EXIT_SUCCESS); }
 

СМОТРИТЕ ТАКЖЕ

sort(1), alphasort(3), strcmp(3), versionsort(3)


 

Index

ИМЯ
ОБЗОР
ОПИСАНИЕ
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
СООТВЕТСТВИЕ СТАНДАРТАМ
ЗАМЕЧАНИЯ
ПРИМЕР
СМОТРИТЕ ТАКЖЕ

This document was created by man2html using the manual pages.
Time: 17:41:55 GMT, May 11, 2012

SVENSKA - SVENSKA - SVENSKA - SVENSKA - ja - pl