哎,还是靠断点慢慢给调试出来了。。。。。
package test;
public class QuickSort {
int[] arr={49,38,65,97,10,40,87,76,13,27};
public void sort(int start,int end,int key)
{
if(start>=(arr.length-1) || end<=0)
return;
if(start==end)
{
int left1=0;
int right1=start-1;
int newkey1=arr[left1];
sort(left1,right1,newkey1);
int left2=start+1;
int right2=arr.length-1;
int newkey2=arr[left2];
sort(left2,right2,newkey2);
return;
}
while(arr[end]>key && start<end)
end--;
while(arr[start]<key && start<end)
start++;
int temp=arr[start];
arr[start]=arr[end];
arr[end]=temp;
sort(start,end,key);
}
public void sortAll(int start,int end,int key)
{
sort(start,end,key);
for(int i:arr)
System.out.print(i+" ");
}
public static void main(String[] args)
{
QuickSort qs=new QuickSort();
qs.sortAll(0, qs.arr.length-1,qs.arr[0]);
}
}
分享到:
相关推荐
快速排序 非递归实现方式的完整源代码和测试结果。
利用栈来消除递归 模拟快速排序的过程 实现非递归的快速排序
两种方法: 传统的递归快速排序 采用非递归堆栈模拟
可以用递归快速实现排序算法,简洁高效,算法复杂度比较合理
c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘...
java 快速排序 折半查找的界面实现 (递归与分治法)
用栈实现的快速排序,避免了原来的递归算法
插入排序、选择排序、希尔排序、堆排序、冒泡、双向冒泡、快速排序、归并排序、递归的归并排序、基数排序
使用递归的方法实现快速排序,简洁明了,避免了烦琐的考虑循环。
快速排序快速排序(Quicksort)是对冒泡排序的一种改进。适用很广,高效的排序方法。
快速排序已经是很成熟的排序方法 递归的缺点就是当排序数据量大时,系统堆栈会溢出 递归的实质是在堆栈中不断保存现场,但是现场的数据量是很大的 网上给出了堆栈实现的伪码算法,但是这里面存在很多的BUG 这个程序...
快速排序一般用的是递归算法,利用系统的提供的栈结构,而此非递归算法没有利用栈,巧妙完成了排序,并提供人机交互界面
c++实现的合并排序算法 用递归和非递归两种方式实现的
用C实现了快速排序的非递归算法. int quickpass ( sqlist &R, int low, int high ) { ... } void quicksort ( sqlist &r, int low, int high ) { ... }
采用递归分治算法写的快速排序 这是为上机考试准备的,呵呵
最快的排序算法 最快的算法而且不用递归!运行时间是线性的!,排序算法数据结构
此文档是快速排序的递归与非递归的具体实现代码
C 排序 数据结构 链表 堆排序 希尔排序 快速排序 递归排序。详细解释了每个排序方法原理,并带有程序代码。是学习C语言的绝好资料
源程序给出了插入排序、选择排序、希尔排序、堆排序、冒泡、双向冒泡、快速排序、归并排序、递归的归并排序、基数排序等多种排序算法,其中有17处需要填空。