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