快速排序——单向扫描分区法

这篇博客详细介绍了快速排序算法的一种实现方式——单向扫描分区法,包括其基本思想、具体实施方案,并提供了参考代码供读者理解学习。

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

快速排序——单向扫描分区法


思想

1、利用递归划分子问题


2、定主元,将小于主元的元素放在主元的左侧, 大于主元的元素放在主元的右侧


3、主元的左右两侧就是两个子问题,将每一个子问题重复第2步,即可使序列有序


实施方案

1、将主元定为每个序列或子序列的首元素


2、设置左指针与右指针,左指针指向主元的下一次元素,右指针指向最右边的元素


3、将左指针所指向的元素与主元比较,如果小于或等于主元,左指针向后移动,右指针不变;
如果大于主元,则将左指针所指向的元素,与右指针指向的元素交换,左指针不变,右指针向前移动一位


4、循环往复步骤3,直到左指针的位置大于右指针的位置


参考代码

/*
	快速排序之——单项扫描分区法 
*/ 

#include<stdio.h>

void quickSort(int arr[], int p, int r);
int partition(int arr[], int p, int r);
void swap(int arr[], 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值