Bootstrap

内部排序(五)快速排序(上)- 概述与选择枢轴

快速排序终于要来了,快速排序也是交换排序的一种,其实讲快速排序前应该先讲讲冒泡排序,因为快速排序是对冒泡排序的一种改进,那就先来用最快速度复习一下冒泡排序:

冒泡排序:假设要对待排序了做升序排序,那么首先从待排序列第一个元素开始,和第二个元素作比较,如果第一个元素大于第二个元素,就把它们的位置交换,接着再对序列第二个元素和第三个元素作比较,如果第二个元素比第三个元素大,就交换位置,一直重复直到长度为N的序列的第N-1个元素和第N个元素做完比较后,当前序列中最大的元素就会被放到序列的最后一个位置,这就完成了一趟的冒泡排序。

第二趟冒泡排序就是从头开始对N-1个元素继续做两两之间的交换,直到完成第N-2个元素和第N-1个元素的交换就完成了第二趟排序,依此类推下去直到最后剩下一个元素后完成。完整实现代码可以看我代码云:

https://gitee.com/justinzeng/codes/qovyh7ga1bkfi30lrptem42

好的回到快速排序,快速排序的概述,和归并排序也有点类似,都采用了分而治之的思想,也就是用递归解决问题。具体举个例子来看看快速排序的递归思想是怎样的:

假设待排序列为ÿ

;