快速排序法简单明了
来源:互联网 发布:用友软件 t系列 编辑:程序博客网 时间:2024/06/05 17:42
package JavaSEDay22;
import java.util.Arrays;
/*
arr[] 20, 10, 25, 5, 15, 30, 8, 20, 12
i 0 1 2 3 4 5 6 7 8
i p j
*/
//先使用左边的元素与基准值比较,若左边的元素小于基准值并且确实在左边,则
//使用下一个左边的元素继续与基准值比较大小
while(arr[i]<pivot && i<p){
//位置,p指向该元素原来的位置
if(i < p){
arr[p] = arr[i]; // arr[p]=arr[i]=20
p = i;
// p = i =0
while(pivot<=arr[j] && p<j){
j--;
//p指向该元素原来的位置
if(p < j){
arr[p] = arr[j];
p = j;
}
if(p - left > 1){
quick(arr, left, p-1);
}
if(right - p > 1){
quick(arr, p+1, right);
}
}
public static void main(String[] args) {
int[] brr = {20, 10, 25, 5, 15, 30, 8, 20, 12};
System.out.print("排序后的结果是:");
for(int i = 0; i < brr.length; i++){
System.out.print(brr[i] + " ");
}
System.out.println();
}
import java.util.Arrays;
/*
arr[] 20, 10, 25, 5, 15, 30, 8, 20, 12
i 0 1 2 3 4 5 6 7 8
i p j
*/
public class Quick {
//自定义成员方法实现快速排序算法,将参数指定数组中的所有元素从小到大依次排列
public static void quick(int[] arr, int left, int right){
//1.计算中间元素的下标,并以该元素作为基准值单独保存
int p = (left + right)/2; //无论偶数奇数都是取整数
int pivot = arr[p];
//2.分别使用左右两边的元素依次与基准值比较大小,将所有比基准值小的元素放在
// 左边,将所有比基准值大或者相等的元素放在右边
int i = left;int j = right;
//先使用左边的元素与基准值比较,若左边的元素小于基准值并且确实在左边,则
//使用下一个左边的元素继续与基准值比较大小
while(arr[i]<pivot && i<p){
i++;
}
//位置,p指向该元素原来的位置
if(i < p){
arr[p] = arr[i]; // arr[p]=arr[i]=20
p = i;
// p = i =0
}
while(pivot<=arr[j] && p<j){
j--;
}
//p指向该元素原来的位置
if(p < j){
arr[p] = arr[j];
p = j;
}
}
arr[p] = pivot;
if(p - left > 1){
quick(arr, left, p-1);
}
if(right - p > 1){
quick(arr, p+1, right);
}
}
public static void main(String[] args) {
int[] brr = {20, 10, 25, 5, 15, 30, 8, 20, 12};
Arrays.sort(brr);
System.out.print("排序后的结果是:");
for(int i = 0; i < brr.length; i++){
System.out.print(brr[i] + " ");
}
System.out.println();
}
}
希望能对大家理解快速排序有所帮助。
阅读全文
0 0
- 快速排序法简单明了
- 简单明了快速排序
- 简单明了之归并排序
- 简单明了之堆排序
- 插入排序(简单明了)
- 简单明了
- 排序--快速排序法
- 【排序】快速排序法
- 快速排序法排序
- 排序算法--快速排序法
- 排序算法--快速排序法
- 快速排序法
- 快速排序法
- 快速排序法
- 快速排序法
- 快速排序法qsort
- java快速排序法
- 通用快速排序法
- 1.7 伴随多态的可互换对象
- 数据结构期末总结
- JS中的原型对象(二)
- 纯jsp实现简单的个人博客
- Understanding LSTM Networks
- 快速排序法简单明了
- mysql---联合索引是否生效
- html+css基础视频80-88/表格和表单的使用
- vs2015下opencv3.3扩展opencv_contrib模块并使用SiftFeatureDetector等函数
- 学python(04)——函数生成N位验证码
- java实现验证身份证号是否合法
- day10_进程、协程、异步IO、多路复用
- 【笔记-C++】 class
- NIO