![](https://csdnimg.cn/release/download_crawler_static/86393383/bg3.jpg)
三、实验内容与设计(主要内容,操作步骤、算法描述或程序代码)
1. 查阅相关资料,了解有哪些排序算法,掌握常见的几种排序算法的基本思想;
(1) 冒泡排序(Bubble Sort)
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序错误
就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,
也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由
交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的
气泡最终会上浮到顶端一样,故名“冒泡排序”。
冒泡排序的平均时间复杂度为
,
是一种比较稳定且基础的排序算法。
(2) 选择排序(Selection Sort)
第一次从待排序的数组中选出最小(或最大)的一个元素,存放在序列的起
始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序
的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。
选择排序的平均时间复杂度为
。这是
一种不稳定但是简单的排序算法。
(3) 插入排序(Insertion Sort)
插入排序的原理很简单,就是遍历待排序的数组,每次将每个元素插入合适
的位置。
插入排序的平均时间复杂度为
,
是一种比较稳定且基础的排序算法。
(4) 快速排序(Quick Sort)
快速排序的基本思想是通过一趟排序将待排序的数组分隔成独立的两部分,
其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继
续进行排序,以达到整个序列有序。主要用到的是分治的方法。其具体的步骤如
下:
a) 从数列中挑出一个元素,称为“基准”;
b) 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆
在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中
间位置。这个称为分区操作;
c) 递归地把小于基准值元素的子数列和大于基准值元素的子数列排序。
快速排序的平均时间复杂度为
,即每次选到
的基准值都出于待排序的中间。最坏情况为
,即每次选到的基准值都出于待
排序的极值位置。这是一种不稳定但快捷的排序算法。
(5) 归并排序(Merge Sort)
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法
的一个非常典型的应用。具体步骤如下:
a) 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的
序列;
b) 设定两个指针,最初位置分别为两个已经排序序列的起始位置;