思路:
49 38 65 97 76 13 27
先说自己的想法:
首先看38,发现38比49小,所以换位:
38 49 65 97 76 13 27
这个时候发现65,按理说应该把65放最后面,或者说与27交换位置,变为:
38 49 27 97 76 13 65
这个时候,发现27,27比49小,所以交换位置为:
38 27 49 97 76 13 65
这个时候发现97,我们换97与后面比49小的。
38 27 49 13 76 97 65
这个时候发现13,我们换:
38 27 13 49 76 97 65
后面没有比49 小的了。终止。
我们发现:
每次我们总是从前面找一个比49大的,,从后面找一个比49小的,然后调换他们的位置。
我们发现:这个49所占的位置,是多余的,这个位置可以用来进行交换高低位:
再次变为如下过程:
49 38 65 97 76 13 27
先从后往前找:
找到一个27,比49 小,序列变为:
27 38 65 97 76 13 27
然后从前往后找:
找到一个65,比49大,这个时候把最后一个变为65:
27 38 65 97 76 13 65
关键之处就在于:黄色字所表示的地方正是原来49所占的位置。
再从后往前找。。再找一个比49小的,那就是13:
变为:
27 38 13 97 76 13 65
再从前往后找:
找到97比49大,那么,变为:
27 38 13 97 76 97 65
再从后往前找,一直找到橙色97为止:也就是low的指向:
直到 low=high
这就是快速排序一趟,这个时候我们将橙色97置为49,函数返回它的位置作为分割点。设为partitio
(low,partition-1) 和 (partition,high)两个区间。
分享到:
相关推荐
1)问题描述:输入一组关键字序列分别实现下列排序。 (1)实现简单选择排序、直接插入排序和冒泡排序。 (2)实现希尔排序算法。 (3)实现折半插入排序。 (4)实现快速排序算法。 (5)实现堆排序算法...
快速排序是一种高效的排序算法,由英国计算机科学家C.A.R. Hoare在1960年提出。它的基本思想是分治法(Divide and Conquer),通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的...
在计算机科学和编程领域,多关键字排序是一种处理数据集合的重要技术,它允许我们根据不止一个属性或关键字对数据进行排序。这种排序方法广泛应用于数据库、数据分析、信息检索等多个场景,帮助用户更有效地查找和...
【内部排序算法比较课程设计】主要关注的是对六种经典的内部排序算法的性能对比,包括起泡排序、直接插入排序、简单选择排序、快速排序、希尔排序和堆排序。这些算法是计算机科学中用于对数据进行排序的基础工具,各...
- 快速排序是一种非常高效的排序算法,采用分治法的思想。 - 它选择一个“基准”元素,通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这...
- **时间复杂度**:平均情况下,快速排序的时间复杂度为O(n log n),这是所有比较排序算法中最好的情况之一。在最坏的情况下,即初始序列已经有序时,时间复杂度退化为O(n²)。为了减少这种情况的影响,可以通过随机...
快速排序:分别使用Java和Python实现快速排序算法.zip 快速排序:分别使用Java和Python实现快速排序算法.zip 快速排序:分别使用Java和Python实现快速排序算法.zip 快速排序:分别使用Java和Python实现快速排序算法....
冒泡排序是一种简单的排序算法,通过重复遍历列表,比较相邻元素并交换位置来排序。它会重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要...
Hoare提出的快速排序是一种分治算法,通过选取一个“枢轴”元素并将其与其他元素分割开,使得一半元素小于枢轴,另一半元素大于枢轴,然后再对两半分别进行排序。平均时间复杂度为O(n log n),最坏情况(已排序或...
快速排序是一种高效的排序算法,由英国计算机科学家C.A.R. Hoare在1960年提出。它的基本思想是分治法(Divide and Conquer),将一个大问题分解为两个或更多的小问题来解决。在快速排序中,我们选择一个基准元素,...
在计算机科学领域,排序算法是数据结构与算法中不可或缺的一部分,尤其对于程序员来说,理解和掌握各种排序算法至关重要。2009年的软考程序员考试中,排序算法是重点考察的知识点之一,它涉及到多趟排序的过程,即...
排序算法是计算机科学中最基础和重要的算法之一,用于将一组数据按照特定的顺序进行排列。本文将对几种常见的内部排序算法和外部排序算法进行详细总结。 首先,排序的基本定义是:给定一个包含n个记录的序列,其...
1)问题描述:输入一组关键字序列分别实现下列排序。 (1)实现简单选择排序、直接插入排序和冒泡排序。 (2)实现希尔排序算法。 (3)实现折半插入排序。 (4)实现快速排序算法。 (5)实现堆排序算法...
它的基本思想是:选择一个基准元素,通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后分别对这两部分记录继续进行排序,以达到整个序列有序。 **冒泡排序** 的优点...
Hoare提出的,它采用分治法的思想,选取一个基准元素,通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后再分别对这两部分记录进行快速排序。`QuickSort.cpp`文件...
快速排序(Quick Sort)是一种分治思想的排序算法,它的基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,然后再分别对这两部分记录继续进行排序,以达到...
快速排序是一种高效的排序算法,由英国计算机科学家C.A.R. Hoare在1960年提出。它的基本思想是分治法(Divide and Conquer),通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的...
本资源介绍了六种常用的排序算法:选择排序、直接插入排序、冒泡排序、希尔排序、快速排序和堆排序。下面对每种算法进行详细介绍: 选择排序 选择排序是一种简单的排序算法。其思想是:在要排序的一组数中,选出...
快速排序算法是由Tony Hoare在1960年提出的一种排序算法,它的平均时间复杂度为O(n log n),是目前最快的排序算法之一。下面我们将详细地讲解快速排序算法的java代码实现。 快速排序算法的基本思想 快速排序算法的...
2. 冒泡排序:是最简单的排序算法之一,通过不断交换相邻位置的元素来逐渐达到排序的目的。每一轮遍历都能确保最大(或最小)的元素被放置到正确的位置,重复这个过程直到整个数组排序完成。 3. 选择排序:每次从未...