排序算法

简单选择排序
冒泡排序
快速排序

简单选择排序
  • 主要使用 蛮力法
  • 简单选择排序将数组(元素)分为有序区无序区,有序区的所有元素均小于无序区的元素,然后针对无序区的每一个位置i(0<=i<=n-2),从无序区挑选第i小的元素放在该位置,挑选过程采用直接穷举法,用k记录无序区中最小元素的下标,依次通过无序区中所有元素的比较来实现,当k不等于i时将a[i]与a[k]交换。
    简单选择排序过程
  • 采用穷举思路实现简单选择排序的完整程序如下:
    完整C语言--选择排序
冒泡排序
  • 主要使用 蛮力法
  • 冒泡排序也将整个数组(元素)分为有序区和无序区,有序区的所有元素均小于无序区的元素,然后针对无序区的每个位置i(0<=i<=n-2),从无序区中通过交换方式将第i小的元素放在该位置,交换过程也是采用直接穷举方法,从无序区尾部开始,当相邻的两个元素逆序时将两者交换。当某一趟没有元素交换时说明无序区已经有序了,所有元素均有序,算法结束。
    一趟冒泡排序
  • 采用穷举思路实现冒泡排序的完整程序如下:
    完整C语言--冒泡排序
    在这里插入图片描述
快速排序
  • 主要使用 分治法
  • 快速排序的基本思想是在待排序的n个元素中任取一个元素(通常取第一个元素)作为基准,把该元素放入最终位置后,整个数据序列被基准分割成两个子序列,所有小于基准的元素放置在前子序列中,所有大于基准的元素放置在后子序列中,并把基准排在这两个子序列的中间,这个过程称为划分。然后把对两个子序列分别重复上述过程,直到每个子序列内只有一个元素或空为止。
  • 一趟排序过程如下:
    快速排序的一趟排序过程
  • 实现快速排序的完整程序如下:
    完整C语言--快速排序

本文中图片来自于 李春葆-----《算法设计与分析》
纯粹自用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值