快速排序算法的Java实现

来源:互联网 发布:360浏览器for mac 编辑:程序博客网 时间:2024/05/17 08:48
package com.suifeng.sort;public class QuickSort {public static void main(String[] args) {int[] nums = { 49, 38, 65, 97, 76, 13, 27 };System.out.println("=============排序前=============");//显示排序后的数组 for (int i = 0; i < nums.length; ++i) {System.out.print(nums[i] + ",");}System.out.println();//应用快速排序方法 sort(nums, 0, nums.length - 1);System.out.println("=============排序前=============");//显示排序后的数组 for (int i = 0; i < nums.length; ++i) {System.out.print(nums[i] + ",");}System.out.println("");}public static void sort(int[] arr, int low, int high){int lo = low;int hi = high;if(low >= high){return;}// 默认从后往前数boolean flag = true;while(low < high){// 碰到后边比关键码大的值,交换该值与关键码的位置if(arr[low] > arr[high]){int temp = arr[low];arr[low] = arr[high];arr[high] = temp;// 重置下标移动方向flag = !flag;}if(flag){// 关键码在arr[low]处high--;}else{// 关键码在arr[high]low++;}}high++;low--;sort(arr,lo,low);sort(arr,high,hi);}}


执行结果:

=============排序前=============
49,38,65,97,76,13,27,
=============排序后=============
13,27,38,49,65,76,97,


算法的解释来自于http://www.cnblogs.com/yanzi629/archive/2010/11/20/1882863.html,源码部分也参考里边实例代码的是是实现

原创粉丝点击