算法--自己写快排模板与C++快排库函数使用

本文介绍了快速排序的基本思想,并提供了自己编写的快排模板。同时,详细阐述了C++标准库中的qsort函数,包括其参数含义及如何使用自定义比较函数进行排序。通过示例代码帮助理解不同情况下的排序应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自己写快排模板与C++快排库函数使用


1、自己写快排模板

我理解的快速排序思想原理是:

假定待排序数组的范围是0~N
1、在一个数组中找一个数作为中心点M(可以使用固定位置的数,也可以随机的采用数组中的数)
2、把数组中所有的数与这个中心点进行比较。小于中心点的数移到中心点左边,大于中心点的数移到中心点右边。
3、经过上面两步可以得到由M点所划分的两个数组(一个数组都小于等于M,一个都大于等于M),再对这两个数组递归的进行1、2所示步骤,直到划分的数组大小为0;

       

快排思想实现的主要的重点难点在于第2步的实现:
1、中心点取在左边,所以重右边J的位置开始判断,I目前的值为Left
2、如果J>=M(中心点的值这里为BASE_Num),则J往左移,反之如果J<M则将数组下标为I的数赋值为J,然后进行第3步
3、I移到下一个位置,如果数组Array[I]的值小于等于M,则I继续往右移,直到Array[i]>M,将Array[J]的值赋为Array[I]
4、重复3、4步 直到I>J



可能我自己的表达不是很清楚,大概的思路和实现就是这样了,可以参考以下文章和代码进行理解。
http://blog.youkuaiyun.com/morewindows/article/details/6684558

九度OJ 1196成绩排序  地址:http://ac.jobdu.com/problem.php?pid=1196

#include <stdio.h>

typedef struct
{
	int num;
	int grade;
}STUDENT_INFO_T;

STUDENT_INFO_T  student[101];

//声明一个COMP类型函数指针  以后就可以直接用COMP定义该函数指针 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值