//author:lilywangcn
public class QuickSort {
private static int[] array=new int[]{10,30,20,4,9,-1,6,10,20,4,10,15};
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
print();
quicksort(0,array.length-1);
print();
}
private static void quicksort(int left, int right){
if(left>=right) return;
int i=left;
int j=right+1;
int key=array[left];
while(true){
do{
i++;
}while(i<=right&&array[i]<key);
do{
j--;
}while(j>=left&&array[j]>key);
if(j<i) break;
System.out.println("exchange i="+i+",j="+j);
int tmp=array[i];
array[i]=array[j];
array[j]=tmp;
}
System.out.println("exchange left="+left+",j="+j);
int tmp=array[left];
array[left]=array[j];
array[j]=tmp;
quicksort(left,j-1);
quicksort(j+1,right);
}
private static void print(){
for(int i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
System.out.println("");
}
}
算法复杂度:O(nlogn),算法不稳定。
运行结果:
10 30 20 4 9 -1 6 10 20 4 10 15
exchange i=1,j=10
exchange i=2,j=9
exchange i=7,j=7
exchange left=0,j=6
exchange i=1,j=5
exchange left=0,j=3
exchange i=2,j=2
exchange left=0,j=1
exchange left=4,j=4
exchange left=7,j=7
exchange i=9,j=11
exchange left=8,j=9
exchange left=10,j=11
-1 4 4 6 9 10 10 10 15 20 20 30
分享到:
相关推荐
1.先从数列中取出一个数作为基准数 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边 3.再对左右区间重复第二步,直到各区间只有一个
算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...
MPI并行编程系列二快速排序.pdf
可实现两个计算机间通信 并实现快速排序算法 2分钟内可排1000万个数 数是随机产生的
快速排序(程序).txt快速排序(程序).txt快速排序(程序).txt快速排序(程序).txt快速排序(程序).txt
5-10 快速排序实现1 (1) 5-10 快速排序实现1 5-11 快速排序实现2 5-12 归并排序 5-13 归并排序 代码执行流程 5-14 归并排序时间复杂度及排序算法复杂度对比 5-15 二分查找 5-16 二分查找时间复杂度 六、树和...
本人自己写的一些排序算法,这是系列1归并排序算法实现,
虽然本文提供了一系列实用的快速排序教程,但真正的掌握还需要结合实际操作和项目经验。建议读者在准备面试的同时,通过实际项目或模拟环境来应用这些快速排序概念,以便更深刻地理解和掌握它们。此外,随着技术的...
采用静态链表和插入排序对归并排序进行优化,并随机生成一系列数,与快速排序进行性能比较,结果表明,两者接近
常见的排序算法包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。 搜索算法:搜索算法用于在数据集中查找特定元素的算法。常见的搜索算法包括线性搜索、二分搜索等。 图算法:图算法用于处理图结构的数据...
常见的排序算法包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。 搜索算法:搜索算法用于在数据集中查找特定元素的算法。常见的搜索算法包括线性搜索、二分搜索等。 图算法:图算法用于处理图结构的数据...
常见的排序算法包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。 搜索算法:搜索算法用于在数据集中查找特定元素的算法。常见的搜索算法包括线性搜索、二分搜索等。 图算法:图算法用于处理图结构的数据...
某个二维数组存放了一系列的字符串,试利用排序的一些算法(如插入、冒泡、快速排序等)例如:二维数组的字符串如下: char s[][20]={“while”,”if”,“else”,”do”,“for”,”switch”,“case”,};
-----简单代码源代码...本实验工程用图形显示了四种常见排序算法的效率,包括快速排序、合并排序、选择排序和冒泡排序。可以直观的看到冒泡排序的效率非常低下,还不如选择排序!(请用visual studio 2008打开工程)
第三部分“排序”(第6~11章)按章节顺序分别讨论基本排序方法(如选择排序、插入排序、冒泡排序、希尔排序等)、快速排序方法、归并和归并排序方法、优先队列与堆排序方法、基数排序方法以及特殊用途的排序方法,...
包括: 堆排序.swf 规并排序.swf 基数排序.swf 快速排序.swf 冒泡排序.swf 桶式排序法.swf 希尔排序.swf 直接插入排序.swf 直接选择排序.swf
NULL 博文链接:https://wojiaolongyinong.iteye.com/blog/1868188
归并排序,在排序算法中还有一种算法用到了递归,那就是快速排序,快速排序也是一种利用了分而治之策略的算法,它由C.A.R发明,它依据中心元素的值,利用一系列递归调用将数据表划分成越来越小的子表。在每一步调用...
第09讲 - 快速排序 第10讲 - 二叉树的基本概念 第11讲 - 二叉树的基本操作 第12讲 - 遍历二叉树 第13讲 - 删除二叉树节点 第14讲 - 红黑树 第15讲 - 哈希表 第16讲 - 开放地址法 第17讲 - 链地址法 第18讲...
其中包含多种排序算法的实现与分析,如快速排序、归并排序、堆排序等,以及动态规划在解决最长公共子序列、矩阵链相乘问题上的应用。此外,还探讨了三壶谜题、交替放置的碟子等经典数学问题的算法思路。 适用人群为...