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);
}
}
分享到:
相关推荐
快速排序是实际运用中用的最多的算法,虽然它在最坏的情况下会达到n^2,但它的平均性能非常好,期望时间复杂度为nlgn,而且隐含的常数因子非常小,并且是原址排序。 快速排序原理:从一组数中任意选出一个数,将...
快速排序实现,实现时间性能分析(IDE:xcode)
Python 算法 13快速排序实现.mp4
快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个...
C++实现归并排序与快速排序
C语言数据结构实现快速排序代码,已经过调试可以直接使用。
用c++写的一个快速排序程序的实现,程序简洁,可以直接用在C语言上
数据结构内的快速排序实现 内含测试程序 ·············
这事一个总结快速排序内涵和实现比较优秀的稿件,总重可以加深对排序的了解。具体代码可以在我的博客中找到(快速排序 thinking in quicksort)。
C语言实现多种链表快速排序
算法的实验,背包问题,二分搜索_快速排序_背包问题,若有兴趣可以下载使用。
java 快速排序实现。可以跑的代码 java 快速排序实现。可以跑的代码 java 快速排序实现。可以跑的代码 java 快速排序实现。可以跑的代码
精炼的快速排序实现代码,简洁明了,语言是C,主函数可以随意调试更改。注:快速排序的优化方式多种多样,并不局限于此,如有好的改进方法欢迎交流。
快速排序 非递归实现方式的完整源代码和测试结果。
知道快速排序算法的思想,但是一直都没有动手写,今天写了下,发现还不是那么容易
全面的排序算法实现,包括插入排序、合并排序、堆排序、快速排序。 堆排序:HeapSort 讲解详见http://blog.csdn.net/fly_yr/article/details/8550701 插入排序:InSertion_Sort 讲解详见...
直接插入、折半插入、冒泡、快速、简单选择等排序方法 用c语言实现 代码运行正常 不会有任何的问题
快速排序 java实现
这是一个用C语言实现的快速排序的程序,它实现了对一个英文文本中的单词排序并将排序结果输出到另外一个文件中。