常用算法总结之排序(四)----快速排序

本文详细介绍了快速排序算法的基本原理和实现步骤。快速排序采用分治策略,通过选择基准元素并进行分区来实现高效排序。文中提供了具体的分割数据序列方法和递归排序流程,以及C++代码实现。

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


       快速排序是对冒泡排序的一种改进。使用分治的策略进行排序。

       基本思想:通过一遍排序将待排序数据划分为两部分,使其中一部分比另一部分小,然后分别对两部分数据继续进行快速排序,直至每部分为空或只包含一个数据。通过快速排序思想的描述可以很明显的看出快速排序是一种采用递归排序的方法。

       具体排序过程:

       通过分治策略将序列分为两个子序列

     (1)首先,从数列中挑出一个元素作为“基准”,

     (2)扫描一遍数列,将所有比“基准”小的元素排在基准前,所有比基准大的元素排在基准后,

     (3)递归划分子序列为更小的序列,直到把两部分子序列排序完成。
 

       分割数据序列的具体方法:

     (1)首先取数列第一个元素为基准,记为base,left保存数列最小序号,right保存最大序号,

     (2)然后从数列右侧开始逐个取出元素与base比较,直到找到第一个比base小的元素,

     (3)将右侧找到的比base小的元素保存到left序号中,

     (4)然后从数列左边开始逐个取出元素与base比较,直到找到第一个比base大的元素,

     (5)将左侧找到的比base大的元素保存到right序号中,

     (6)将base的值保存在left中,这期间,比较过程中,left及right的值会因元素值与base的大小关系而自增或自减,(left自增,right自减)

     (7)经过一次分割,base中的元素储存在序号left中,其左侧数据小于base,右侧数据大于base,

     (8)递归调用,将base左侧数据及右侧数据进行同样的排序。
 

        快速排序的具体方法:

      (1)分割数据,找到以base为基准的两部分子序列,并将base元素的序号保存为i;

      (2)对前半部分快速排序;

      (3)对后半部分快速排序;
 

       c++代码实现:

       1.随机数生成部分同前

       2.分割数据序列的函数          Division

       3.快速排序函数                      QuickSort

       4.测试主函数                          TestMain         只需修改函数调用部分为QuickSort

分割数据函数部分:
 
快速排序函数部分:
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值