数组——快速排序法(递归)
来源:互联网 发布:yy淘宝兼职是真的吗 编辑:程序博客网 时间:2024/06/05 05:01
import java.util.*;
class QuickSort{
//快速排序法
public void sort(int left, int right, int array[]){
int l = left;
int r = right;
int midVal = array[(l+r)/2];//用中间的元素值做为比较的中间值
int temp = 0;
while(l<r){
while(array[l]<midVal){
l++;
}
while(array[r]>midVal){
r--;
}
if(l>=r){
break;
}
temp = array[l];
array[l] = array[r];
array[r] = temp;
//相等的情况也必须判定必处理
if(array[l] == midVal){
r--;
}
if(array[r] == midVal){
++l;
}
}
if(l==r){
++l;
--r;
}
//这里用到递归的思想
if(left<r){
sort(left, r, array);//传入数组第一个元素下标0与当前r的值。
}
if(right>l){
sort(l, right, array);//传入数组当前r的值与数组最后一个元素的下标。
}
}
}
class Test{
public static void main(String args[]){
int array[] = new int[13];
System.out.println("生成13个0~99的随机数:");
for(int i=0; i<array.length; i++){
array[i] = (int)(Math.random()*100);
System.out.print(array[i]+" ");
}
QuickSort qs = new QuickSort();
qs.sort(0, array.length-1, array);//传入数组首尾元素的下标与数组引用
System.out.println("\n用快速排序法排序后为:");
for(int i=0; i<array.length; i++){
System.out.print(array[i]+" ");
}
}
}
/********************************
生成13个0~99的随机数:
34 8 1 81 35 35 46 96 4 25 75 93 59
用快速排序法排序后为:
1 4 8 25 34 35 35 46 59 75 81 93 96
********************************/
- 数组——快速排序法(递归)
- 快速排序——栈和数组——两种思路(递归+挖坑填埋法)
- 数组 快速排序 递归算法
- 快速排序 数组+递归实现
- 快速排序(递归)
- 快速排序(递归)
- 快速排序(递归)
- 数组的快速排序(递归,需要隐性栈空间)
- 快速排序法(递归调用)
- 快速排序详解(递归法)
- 快速排序(递归法与迭代法)
- 递归与分治——快速排序
- 分治与递归——快速排序
- 算法系列—快速排序及其优化(递归)
- 数组排序——快速排序
- 排序--递归排序(快速排序)
- 快速排序法 递归
- 快速排序【递归分治法】
- Josephu问题-上——创建环形链表
- Josephu问题-下——实现程序功能
- 多态问题总结
- 数组——插入排序法(初步理解)
- 数组——插入排序法(对随机数进行排序)
- 数组——快速排序法(递归)
- 小强的HTML5移动开发之路(46)——汇率计算器【2】
- 白话经典算法系列之六 快速排序 快速搞定(转)
- 使用接口实现多继承
- js局部刷新
- API程序详解(来源于杨力祥windows设计课件)
- Linux中常用的网络命令
- Linux动态库与静态库的制作
- 冒泡算法