算法分析与设计——各类排序算法
主要介绍关于插入排序、冒泡排序、快速排序、二分归并排序等几种排序算法。
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.二分归并算法
把元素序列从中间划分开,利用递归排序,二分排序两边子问题,得到最终排好序的两个子问题,再依次一边拿出一个元素 ,对比之后进行归并。