c++中参考C语言的qsort函数实现一个一个能对任意数据类型(包括结构体)的数组进行排序的函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++中参考C语言的qsort函数实现一个一个能对任意数据类型(包括结构体)的数组进行排序的函数相关的知识,希望对你有一定的参考价值。

悬赏只是小小敬意,估计大神不缺这个。

#include <stdio.h>
void qusort(int s[], int start, int end) /*自定义函数qusort()*/

int i, j; /*定义变量为基本整型*/
i = start; /*将每组首个元素赋给i*/
j = end; /*将每组末尾元素赋给j*/
s[0] = s[start]; /*设置基准值*/
while (i < j)

while (i < j && s[0] < s[j])
j--; /*位置左移*/
if (i < j)

s[i] = s[j]; /*将s[j]放到s[i]的位置上*/
i++; /*位置右移*/

while (i < j && s[i] <= s[0])
i++; /*位置右移*/
if (i < j)

s[j] = s[i]; /*将大于基准值的s[j]放到s[i]位置*/
j--; /*位置右移*/


s[i] = s[0]; /*将基准值放入指定位置*/
if (start < i)
qusort(s, start, j - 1); /*对分割出的部分递归调用函数qusort()*/
if (i < end)
qusort(s, j + 1, end);

main()

int a[11], i; /*定义数组及变量为基本整型*/
printf("please input numbers:\\n");
for (i = 1; i <= 10; i++)
scanf("%d", &a[i]); /*从键盘中输入10个要进行排序的数*/
qusort(a, 1, 10); /*调用qusort()函数进行排序*/
printf("the sorted numbers:\\n");
for (i = 1; i <= 10; i++)
printf("%5d", a[i]); /*输出排好序的数组*/
参考技术A algorithm库函数中的sort函数 参考技术B 看下stl 算法中对应的sort函数,应该能满足你的要求

C语言之qsort函数进行排序

目录

qsort()介绍

 qsort()函数定义

 qsort()函数的使用

 对整型数据进行排序

 排序结构体数据

 使用冒泡排序模拟实现qsort()函数

qsort()介绍

qsort()为库函数

全称:quick sort快速排序,因此qsort函数用的是快速排序,头文件为stdlib.h
用qsort()实现排序功能,qsort()可以对整型数组,字符串数组,结构体数组等任意数据进行排序

 qsort()函数定义

其中cmp是一个函数指针,函数指针的意思是指向一个函数的指针,qsort通过cmp指向不同的函数就可以实现如何比较,比如是从大到小排序还是从小到大排序

 qsort()函数的使用

 对整型数据进行排序

 运行结果:

 排序结构体数据

 

 通过调试窗口查看s的变化

使用sort_by_age排序

使用sort_by_name排序

 

 使用冒泡排序模拟实现qsort()函数

 

 运行结果

​​​​​​​

以上是关于c++中参考C语言的qsort函数实现一个一个能对任意数据类型(包括结构体)的数组进行排序的函数的主要内容,如果未能解决你的问题,请参考以下文章

C语言篇 + 指针进阶练习 + qsort模拟实现(回调函数思想) + 指针和数组笔试题

C语言之qsort函数进行排序

怎么样才能做到对多种数据类型排序?C语言快速排序——qsort函数及其模拟实现

c语言重要库函数解读 和模拟实现————Qsort

C语言自带的快速排序(qsort)函数使用方法

C语言qsort()库函数用回调函数的原因