交换排序----冒泡排序 和 快速排序

本文介绍了两种经典的排序算法——冒泡排序和快速排序。详细解释了这两种算法的工作原理及其实现过程,并提供了模板化的代码示例。

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

      通过对比大小交换对比的元素所得到的排序为交换排序。冒牌排序时很常见的:通过对比相邻元素的大小如果前面的元素比后面的大,则交换两个元素,使得大的元素往后移。
一、冒泡排序

 

二、快速排序,本文重点
       快速排序在一次排序中有两个方向,一个是从尾部向前(逆向),一个是从首部标志(不包括首部标志)向后(正向),正向和逆向不能相遇,相遇则终止{while(low
       流程:
       取第一个数为标志,逆向比较是否大于等于这个值,大于等于则继续逆向,如果小于则终止逆向,将这个值赋给标志位出(L.key[low]=L.key[high];)。
       正向比较low+1开始,比较值是否小于等于标志值,小于等于则继续正向,如果大于标志值则终止正向,将这个值赋给刚才的高位(L.key[high]=L.key[low];)。
      当前的low位便是标志位,low之前的数据都是小于等于标志数据的,low之后的数据都是大于等于标志数据的。所以最后将low位的数据置为标志数据(L.key[low]=L.key[0],  Key[0]用来保存交换数据)。low便是分开标志位。
       递归调用:
       通过递归的调用进行快速排序,递归的继续条件是{if(low< high)},也就是终止条件是low>=high。

 

PS:template 后面跟有 < class T > ,这个编辑器自动把它屏蔽了,可能是怕和css样式格式混淆之类~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值