哎,还是靠断点慢慢给调试出来了。。。。。
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.A.R....总的来说,这个压缩包提供了一个非递归实现快速排序的完整示例,通过自定义栈的数据结构,实现了快速排序算法,适用于理解和学习快速排序的非递归实现方式。
它的基本思想是分治法,通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到...
快速排序在平均情况下的时间复杂度为O(n log n),空间复杂度为O(log n),这使得它在处理大规模数据集时表现优秀。 ### 快速排序的递归简洁实现 #### 分区函数(Partition) 分区是快速排序的核心步骤,其主要目标...
3. **递归排序**:对基准左边的子数组和右边的子数组分别进行快速排序,这个过程通过递归调用快速排序函数来实现。如果子数组为空,递归结束;否则,重复步骤1和2。 4. **合并结果**:由于排序是就地进行的,不需要...
快速排序在C语言实现时,需要注意以下几点: 1. **指针操作**:C语言中,通过指针来处理数组元素,方便地进行地址传递和元素交换。 2. **递归调用**:C语言支持函数递归,可以用于实现快速排序的递归过程。 3. **...
### JAVA快速排序(递归实现与非递归堆栈模拟实现) #### 一、递归实现的快速排序 快速排序是一种非常高效的排序算法,它的基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分的所有记录都比另一...
它的基本思想是分治法,通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到...
以下是关于"插入排序、选择排序、希尔排序、堆排序、冒泡、双向冒泡、快速排序、归并排序、递归的归并排序、基数排序"这十大经典排序算法的详细解释: 1. 插入排序:插入排序是一种简单的排序算法,它通过构建有序...
这个过程通过递归地对这两部分进行快速排序来完成,直到子数组的大小只有一项,排序结束。 快速排序的基本步骤如下: 1. 选取数组中的一个元素作为基准。 2. 将数组元素与基准比较,小于基准的放在基准前面,大于...
用栈实现的快速排序,避免了原来的递归算法
快速排序的核心思想是分治法:选取一个基准元素,将数组分为小于基准的元素和大于或等于基准的元素两部分,然后对这两部分再进行快速排序。这一过程可以通过递归实现,直到所有元素都排好序。 以下是快速排序的...
c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘...
快速排序是一种高效的排序算法,由英国计算机科学家C.A.R. Hoare在1960年提出。...这个非递归版本的快速排序在处理大数据集时,相比递归版本更节省内存,因为它不使用系统栈,但可能在循环次数上稍多一些。
### 排序算法:快速排序(三种排序方式、递归和非递归) #### 快速排序概述 快速排序是一种高效的排序算法,由C. A. R. Hoare于1962年提出。它是基于分治策略的一种排序方法,通过选取一个基准值将待排序数组分为...
快速排序已经是很成熟的排序方法 递归的缺点就是当排序数据量大时,系统堆栈会溢出 递归的实质是在堆栈中不断保存现场,但是现场的数据量是很大的 网上给出了堆栈实现的伪码算法,但是这里面存在很多的BUG 这个程序...
c++实现的合并排序算法 用递归和非递归两种方式实现的
"C语言学习之排序数据结构链表堆排序希尔排序快速排序递归排序" 本资源主要介绍了C语言中的排序算法,包括链表、堆排序、希尔排序、快速排序和递归排序等五种方法。同时,文章还提供了每种排序方法的原理、流程图和...
采用递归分治算法写的快速排序 这是为上机考试准备的,呵呵
合并排序算法、快速排序算法和递归分治是计算机科学中的基础概念,它们在数据处理和算法设计中占据着重要地位。以下是对这些知识点的详细解释: **合并排序算法(Merge Sort)** 合并排序是一种基于分治策略的排序...
Hoare提出的分治策略,选取一个基准值,将数组分为小于基准值和大于基准值的两部分,然后递归地对这两部分进行快速排序。C#实现中,关键在于划分操作。快速排序平均时间复杂度为O(n log n),但在最坏情况下(输入...