C语言程序设计之标准库中的快速排序函数qsort()使用方法

C语言标准库中自带的快速排序函数qsort(),排序效率特高,使用简单方便,非常实用。qsort()的函数原型如下:

#include <stdlib.h>
void qsort(void *base, size_t nmemb, size_t size,
    int (*compar)(const void *, const void *));

一、 整型数组排序

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

int compar(const void *a, const void *b)
{
	int n = *(int *)a;
	int m = *(int *)b;
	return (n - m);
}

int main(void)
{
	int a[5] = {12, 76, 99, 34, 35};
	
	printf("排序前:");
	for(int i=0; i<5; i++)
	{
		printf("%d\t", a[i]);
	}
	printf("\n");
	
	qsort(a, 5, sizeof(int), compar);
	
	printf("排序后:");
	for(int i=0; i<5; i++)
	{
		printf("%d\t", a[i]);
	}
	printf("\n");
	
	return 0;
}

二、字符型数组排序

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

int compar(const void *a, const void *b)
{
	char *n = *(char **)a;
	char *m = *(char **)b;
	return strcmp(n, m);
}

int main(void)
{
	char *a[5] = {"Beijing", "Shanghai", "Nanjing", "Wuxi", "China"};
	
	printf("排序前:");
	for(int i=0; i<5; i++)
	{
		printf("%s\t", a[i]);
	}
	printf("\n");
	
	qsort(a, 5, sizeof(char *), compar);
	
	printf("排序后:");
	for(int i=0; i<5; i++)
	{
		printf("%s\t", a[i]);
	}
	printf("\n");
	
	return 0;
}

Leave a Reply

Your email address will not be published. Required fields are marked *