java实现的快速排序算法
来源:互联网 发布:国外聊天软件app 编辑:程序博客网 时间:2024/05/17 22:35
java实现的快速排序算法
快速排序的原理:选择一个关键值作为基准值。比基准值小的都在左边序列(一般是无序的),比基准值大的都在右边(一般是无序的)。一般选择序列的第一个元素。
一次循环:从后往前比较,用基准值和最后一个值比较,如果比基准值小的交换位置,如果没有继续比较下一个,直到找到第一个比基准值小的值才交换。找到这个值之后,又从前往后开始比较,如果有比基准值大的,交换位置,如果没有继续比较下一个,直到找到第一个比基准值大的值才交换。直到从前往后的比较索引>从后往前比较的索引,结束第一次循环,此时,对于基准值来说,左右两边就是有序的了。
接着分别比较左右两边的序列,重复上述的循环。
public class FastSort{
public static void main(String []args){
System.out.println("Hello World");
int[] a = {12,20,5,16,15,1,30,45,23,9};
int start = 0;
int end = a.length-1;
sort(a,start,end);
for(int i = 0; i<a.length; i++){
System.out.println(a[i]);
}
}
public void sort(int[] a,int low,int high){
int start = low;
int end = high;
int key = a[low];
while(end>start){
//从后往前比较
while(end>start&&a[end]>=key) //如果没有比关键值小的,比较下一个,直到有比关键值小的交换位置,然后又从前往后比较
end--;
if(a[end]<=key){
int temp = a[end];
a[end] = a[start];
a[start] = temp;
}
//从前往后比较
while(end>start&&a[start]<=key)//如果没有比关键值大的,比较下一个,直到有比关键值大的交换位置
start++;
if(a[start]>=key){
int temp = a[start];
a[start] = a[end];
a[end] = temp;
}
//此时第一次循环比较结束,关键值的位置已经确定了。左边的值都比关键值小,右边的值都比关键值大,但是两边的顺序还有可能是不一样的,进行下面的递归调用
}
//递归
if(start>low) sort(a,low,start-1);//左边序列。第一个索引位置到关键值索引-1
if(end<high) sort(a,end+1,high);//右边序列。从关键值索引+1到最后一个
}
}
- [排序算法]--快速排序的Java实现
- [Java]快速排序算法的Java实现
- Java实现数组的快速排序(快速排序算法)
- 快速排序算法的JAVA实现
- 快速排序算法的JAVA实现
- 快速排序算法的JAVA实现
- 快速排序算法的JAVA实现
- java快速排序算法的简单实现
- 快速排序算法的Java实现
- 快速排序算法的Java实现
- 快速排序算法的JAVA实现 .
- 快速排序算法的JAVA实现
- Java实现的快速排序算法
- 快速排序算法的Java实现
- Java快速排序算法的实现
- JAVA中快速排序算法的实现
- Java-快速排序算法的实现
- java实现的快速排序算法
- Android之导jar包审查步骤和打电话拍照微信意图代码
- 【网络流二十四题 骑士共存问题】【二分图点权最大独立集->最小割】
- leetcode 第4题 Median of Two Sorted Arrays
- [技巧分享-软件使用]IntelliJ IDEA 2017.1.3汉化教程
- EasyPR--一个开源的中文车牌识别系统
- java实现的快速排序算法
- spring项目元素检查
- Visual Studio 使用技巧(高阶)
- Nginx日志切割
- oracle的多行插入
- Hue安装配置实践
- Javaweb基础_servlet开发(一)
- springmvc(5):小结,通过map数据模型传递数据展示一个表
- Eclipse输入重定向