算法-排序-交换排序(冒泡和快速排序)

本文介绍了交换排序的两种常见算法——冒泡排序和快速排序。冒泡排序通过重复遍历序列并交换相邻元素来排序,是稳定的排序算法,但效率较低。快速排序则采用分治策略,选取分界点将序列分为两部分,递归处理,但它是非稳定的排序算法。
摘要由CSDN通过智能技术生成

交换排序

这次学习了两种交换排序算法:冒泡排序和快速排序算法;两种方法都是基于元素交换的概念而来的,交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。下面简单介绍其基本原理。

1、冒泡排序
基本原理:把序列的每个元素当成一个气泡,则轻的气泡在上,重的在下。排序过程为每次从最下面的气泡R[n]开始,让它与上一个气泡R[n-1]比较大小
若比上面的小,则交换顺序,否则不改变。然后进行下一步,对R[n-1]和R[n-2]进行相同的比较,直到R[1]和R[0],这样一趟比较就将序列中最小的额
元素放在了序列的最上面,然后进行第二趟比较,从R[n]到R[1],将第二小的元素放在R[1]位置,依次类推,最后就可以得到排列的序列
演示动画:http://student.zjzk.cn/course_ware/data_structure/web/flashhtml/maopaopaixu.htm

算法为就地排序,是稳定的,由于元素移动次序多,因此性能比直接插入排序要差

2、快速排序
基本原理:采用分治的思想,将问题分成若干个结构相同的问题通过递归来解决。假设一个序列R,i,j作为上下边界,在R中取一个值作为分界点,把R中的值分成两边,左边的比R小,右边的比R大,这样再分别对左右两边的值做相同的运算,最终就可以得到排列好的序列。
演示动画:http://student.zjzk.cn/course_ware/data_structure/web/flashhtml/kuaisupaixu.htm

排序是非稳定的

下面来看具体实现:

#include <iostream>
#include <vector>
using namespace std;
const int N = 20;    //定义常量    也可以这样 #define N 20 

void disp(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值