快速排序代码实现

来源:互联网 发布:手机格式化后数据恢复 编辑:程序博客网 时间:2024/05/22 18:09
public static int getFristIndex(int[] arr,int frist,int end){int i = frist;int j = end;while(i<j){while(i<j && arr[i]<=arr[j])j--;if(i<j){int temp= arr[i];arr[i] = arr[j];arr[j] = temp;i++;}while(i<j && arr[i]<=arr[j])i++;if(i<j){int temp= arr[i];arr[i] = arr[j];arr[j] = temp;j--;}}return i;}public static int[] quickSort(int[] arr,int first,int end){if(first<end){int middle = getFristIndex(arr, first, end);quickSort(arr, first, middle-1);quickSort(arr, middle+1, end);}return arr;}
一般分如下步骤:
1)选择一个枢纽元素(有很对选法,我的实现里采用去中间元素的简单方法)
2)使用该枢纽元素分割数组,使得比该元素小的元素在它的左边,比它大的在右边。并把枢纽元素放在合适的位置。
3)根据枢纽元素最后确定的位置,把数组分成三部分,左边的,右边的,枢纽元素自己,对左边的,右边的分别递归调用快速排序算法即可。
快速排序的核心在于分割算法,也可以说是最有技巧的部分。
0 0
原创粉丝点击