Description
用函数实现快速排序,并输出每次分区后排序的结果输入格式
第一行:键盘输入待排序关键的个数n 第二行:输入n个待排序关键字,用空格分隔数据输出格式
每行输出每趟排序的结果,数据之间用一个空格分隔输入样例
10 5 4 8 0 9 3 2 6 7 1输出样例
1 4 2 0 3 5 9 6 7 8 0 1 2 4 3 5 9 6 7 8 0 1 2 4 3 5 9 6 7 8 0 1 2 3 4 5 9 6 7 8 0 1 2 3 4 5 8 6 7 9 0 1 2 3 4 5 7 6 8 9 0 1 2 3 4 5 6 7 8 9
好久都没有更新啦!五一玩过头了TUT
排序这一章的前面几个算法,像直接插入排序、折半插入排序都是比较简单的,这里我对快速排序做个小小的笔记。
首先,我们要了解快速排序的步骤。
书上其实介绍的蛮清楚的,不过全是文字,所以看起来会有点枯燥且难懂。下面我用样例来进行解释。(PS:快排也是有很多方法哒!我下面所介绍的这个方法和书上有点点不太一样,因为上课没听懂,所以在网上找了点小小资源,不过弄明白了一种方法,另一种方法也是很好理解的。我先介绍我的方法,再介绍书上的方法)
以题目所给输入样例为例。

步骤:
(1)以第一个数“5”为基准点,设置头尾指针,分别指向第一个数和最后一个数。
(2)从右往左,找出第一个小于基准点“5”的数,也就是“1”,找的同时要移动尾指针j哦,即j--
(3)再从左往右,找出第一个大于基准点“5”的数,也就是“8”,同理,找的时候要移动头指针,即i++

(4)现在的指针i和j如上图所示,交换指针i和j所指的数,如下图所示

(5)重复步骤(2)~(4),直至指针i和j相遇


559

被折叠的 条评论
为什么被折叠?



