交换排序---快速排序
来源:互联网 发布:区域生长算法 matlab 编辑:程序博客网 时间:2024/05/01 17:22
public class QuickSort {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = new int[]{2,8,-6,71,12,52,1,-3};
System.out.println("原来元素:"+java.util.Arrays.toString(arr));
quickSort(arr);
System.out.println("排序后:"+java.util.Arrays.toString(arr));
}
public static void quickSort(int[] arr){
subSort( arr,0,arr.length-1);
};
private static void subSort(int[] arr,int begin,int end){
int i = 0;
int j = end+1;
//需要排序
if(begin<end){
//先从左面找到 大于 分界值的 索引,
while(true){
while(i<end&&arr[++i]<=arr[begin]);
// {
//// i++;
// // if(i==j){
// // break;
// // }
// }
//从右面找到 小于 分界值的 元素,
while(j>begin&&arr[--j]>=arr[begin]);
// {
//// j--;
//// if(i==j){
//// break;
//// }
// }
if(i<j){
swap(arr,i,j);
System.out.println("排序后1:"+java.util.Arrays.toString(arr));
}
else{
break;
}
// //i>j 进行下次循环
// if(i>j){
// swap(arr,i,j);
// subSort(arr, begin, end);
// System.out.println("排序后2:"+java.util.Arrays.toString(arr));
// }
}
//
swap(arr,begin,j);
System.out.println("排序后2:"+java.util.Arrays.toString(arr));
//递归左子序列
subSort(arr,begin,j-1);
System.out.println("排序后3:"+java.util.Arrays.toString(arr));
//递归右子序列
subSort(arr,j+1,end);
System.out.println("排序后4:"+java.util.Arrays.toString(arr));
}
}
private static void swap(int[] arr,int i,int j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
0 0
- 交换排序--快速排序
- 交换排序:快速排序
- 交换排序-快速排序
- 交换排序-快速排序
- 交换排序------快速排序
- 【交换排序】快速排序
- 交换排序---快速排序
- 交换排序-快速排序
- 交换排序-快速排序
- 交换排序--快速排序
- 交换排序-快速排序
- 交换排序之----快速排序
- 交换排序之快速排序
- 交换排序:快速排序 学习
- 【交换排序】快速排序--Java
- 交换排序—快速排序
- 交换类排序-快速排序
- 交换排序_2.快速排序
- IOS 笔记之错误收集
- 全局变量 局部变量 静态变量的区别
- 【C++】《C++标准程序库》小结第十章-特殊容器
- CDOJ 1039 Fabricate equation
- intentService
- 交换排序---快速排序
- 《精通Objective-C》笔记 第二章 16.3.21
- 逆向某停车app(原创)
- 推荐vpn
- 安卓属性动画(Property Animation)(下)
- Appium探索——Mac OS Python版
- <LeetCode>258. Add Digits
- Genymotion不能运行
- iOS一代码搞定定位