排序算法——交换类排序

今天我们讨论一下交换类排序。
交换排序的算法思想:通过交换逆序的元素实现交换排序。交换排序主要有两种:一种是冒泡排序,一种是快速排序。

一、冒泡排序

算法思想:

冒泡排序是一种简单的交换类排序算法,它是通过交换相邻两个数据元素,逐步将排序序列变成有序序列。基本算法思想描述如下:
假设待排序元素有n个,从第一个元素开始一次交换相邻的两个逆序元素,直到最后一个元素为止。第一趟排序结束,将最大的元素移动到序列末尾。按照上述方式进行第二趟排序,次大的元素将会被移动到倒数第二个位置。依次类推,经过n-1趟排序后,整个序列都是有序序列。每趟排序过程,值小的元素向前移动,值大的元素向后移动,就像气泡一样向上升,因此被称为冒泡排序。
排序过程:{}中为有序序列
初始状态:56 72 44 31 99 21 69 80
第一趟:56 44 31 72 21 69 80 {99}
第二趟:44 31 56 21 69 72 {80 99}
第三趟:31 44 21 56 69 {72 80 99}
第四趟:31 21 44 56 {69 72 80 99}
第五趟:21 31 44 {56 69 72 80 99}
第六趟:21 31 {44 56 69 72 80 99}
第七趟:21 {31 44 56 69 72 80 99}
当第七趟完成后,序列第一个数即为最小元素,所以全部序列有序。咦,怎么回事,第五趟排序完成以后序列就全部有序了,怎么还要进行后面的第六七啊?所以我们就对其做一个小小的优化,当第K趟排序过后,发现没有做任何交换,说明序列全部有序不需要再进行下面几趟的排序了。
冒泡排序函数的实现:

void BubbleSort(int a[],int n) {
    for(int i=1;i<n;i++){
  
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值