算法分析与设计——各类排序算法

主要介绍关于插入排序、冒泡排序、快速排序、二分归并排序等几种排序算法。

1.

2.

3.

4

首先是几大算法的效率:

算法分析与设计——各类排序算法

1.插入排序:

插入排序:以下图为例,下一个预备插入的为2,首先和前一个7进行对比,7>2,所以7向后挪动,2再和6进行比较,6向后挪动...依次向前,当1与2比较时,1<2,把2排到1后面。算法分析与设计——各类排序算法

一遍下来所有的都已经排好。

 算法分析与设计——各类排序算法

 2.冒泡排序

冒泡排序是进行多次巡回才可以得到排好序的序列。第一次巡回,5与1比较,交换;5与6比较,不交换;6与2 比较,交换...

算法分析与设计——各类排序算法

 多次巡回结果:(需要注意的是,下图中绿色部分是下一次巡回的范围,而这个界限是本次巡回最后一次交换的位置,尤其要注意是交换的位置(第2次巡回6与7只是比较了但没有交换))

算法分析与设计——各类排序算法

 3.快速排序

选定首元素作为划分标准,从前面找第一个比首元素大的,从后往前找第一个比首元素小的,然后将两者进行交换。随后再分别从交换过的两个元素的后面和前面往下寻找。当到中间两个相邻元素进行交换之后,那么首元素和左边最后交换过的那个元素进行交换(下图中是2与5交换)

算法分析与设计——各类排序算法

 此后,相当于最开始的首元素(5)把问题划分成两个子问题(左边和右边),之后递归地进行排序就可以得到结果。

算法分析与设计——各类排序算法

 4.二分归并算法

把元素序列从中间划分开,利用递归排序,二分排序两边子问题,得到最终排好序的两个子问题,再依次一边拿出一个元素 ,对比之后进行归并。

算法分析与设计——各类排序算法