public class Sort {
public static void rSort(int[] a, int p, int r) {
if (p >= r) {
System.out.println(" p= " + p + " r = " + r);
return;
}
int q = partition(a, p, r);
if (q > 0) {
for (int i = 0; i <= q - 1; i++) {
System.out.print(a[i] + " ");
}
}
System.out.print("[" + a[q] + "] ");
for (int i = q + 1; i < a.length; i++) {
System.out.print(a[i] + " ");
}
rSort(a, p, q - 1);
rSort(a, q + 1, r);
}
public static int partition(int[] a, int p, int r) {
if (r > a.length - 1 || r < p) {
return p;
}
int i = p - 1;
int j = p;
int x = a[r];
while (j <= r - 1) {
if (a[j] < x) {
i++;
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
j++;
}
int temp = a[r];
a[r] = a[i + 1];
a[i + 1] = temp;
System.out
.println(" p= " + p + " r = " + r + " partition = " + (i + 1));
return i + 1;
}
public static void main(String[] args) {
int[] arr = { 5, 7, 9, 3, 16, 8, 14, 47, 31 };
rSort(arr, 0, arr.length - 1);
}
}
分享到:
相关推荐
本资料包“C++归并排序与快速排序实现.zip”主要关注两种经典的排序算法:归并排序(Merge Sort)和快速排序(Quick Sort)。下面我们将详细探讨这两种排序算法以及如何用C++实现它们。 **归并排序(Merge Sort)**...
### 快速排序实现原理及Java实现 #### 一、快速排序算法原理 快速排序是一种高效的排序算法,基于分治法的思想。它的工作原理可以概括为以下几个步骤: 1. **选择基准值**:从待排序的序列中选择一个元素作为基准...
快速排序是实际运用中用的最多的算法,虽然它在最坏的情况下会达到n^2,但它的平均性能非常好,期望时间复杂度为nlgn,而且隐含的常数因子非常小,并且是原址排序。 快速排序原理:从一组数中任意选出一个数,将...
快速排序实现,实现时间性能分析(IDE:xcode)
Python 算法 13快速排序实现.mp4
6. **边界处理**:在实际的MIPS快速排序实现中,还需要考虑数组为空或只包含一个元素的情况,这些情况不需要排序,可以直接返回。 7. **优化**:为了提高效率,可以考虑使用尾递归优化,或者在划分过程中减少不必要...
以下是一个简单的C++快速排序实现的步骤: 1. **选择基准**:可以从数组的任意位置选取一个元素作为基准,常见的做法是从第一个元素或者最后一个元素开始。 2. **分区**:从数组的第二个元素开始,遍历数组,如果...
C语言数据结构实现快速排序代码,已经过调试可以直接使用。
### 快速排序的核心概念与实现 #### 一、快速排序简介 快速排序是一种非常高效的排序算法,由英国计算机科学家托尼·霍尔(Tony Hoare)于1960年提出。它采用分治法策略来把一个序列分为较小和较大的两个子序列,...
在给出的C++代码中,可以看到改进的快速排序实现如下: - `improved_qsort`函数实现了改进后的快速排序算法。通过设置双指针`i`和`j`,并利用基准元素`pivot`来进行分割操作。 - `quick_sort`函数实现了原始的快速...
用c++写的一个快速排序程序的实现,程序简洁,可以直接用在C语言上
快速排序实现 快速排序是一种非常高效的排序算法,它的基本思想是选择一个基准值,通过一趟排序将待排记录分隔成独立的两部分,其中一部分的所有记录都比另一部分的所有记录都要小,然后分别对这两部分记录继续...
在C语言中实现链表快速排序,首先需要理解链表和快速排序的基本概念。链表不同于数组,它不连续存储数据,而是通过指针连接各个节点。每个节点包含数据元素和指向下一个节点的指针。快速排序的核心是“分区操作”和...
4. **myQuickSort.h**:这个名字可能表示这是一个自定义版本的快速排序实现,可能包含了一些特定的优化或者改进。例如,可能会包含针对已排序或接近排序情况的优化,或者处理小数组的特殊策略。 5. **print.h**:这...
快速排序是一种高效的排序算法,由英国计算机科学家C.A.R....总的来说,这个压缩包提供了一个非递归实现快速排序的完整示例,通过自定义栈的数据结构,实现了快速排序算法,适用于理解和学习快速排序的非递归实现方式。
在C#中实现快速排序,我们通常会用到递归函数。首先,我们需要一个方法来选取枢轴,这可以是数组的第一个元素、最后一个元素,或者数组中间的元素,也可以是三数取中法,即取首、尾、中间三个元素的中位数作为枢轴,...
在提供的代码片段中,可以看到一个简单的快速排序实现。具体步骤如下: 1. **定义函数**:`void QSort(ElemType R[], int n)`,其中`ElemType`表示数组元素的数据类型,`R`是待排序的数组,`n`是数组的长度。 2. **...
Erlang 是一种面向并发的函数式编程语言,其快速排序实现也非常简洁。 ```erlang q_sort([]) -> []; q_sort([H|R]) -> q_sort([X||X,X]) ++ [H] ++ q_sort([X||X,X>=H]). ``` #### 五、快速排序的应用场景 由于...
快速排序实现 - **快速排序函数** `void quick(Sqlist& L, int m, int n)`: - 功能:对线性表`L`在索引`m`至`n`之间的元素进行快速排序。 - 实现:首先检查边界条件,如果起始索引大于等于终止索引则返回;接着...