package datastucture;
/**
* 快速排序:是对起泡排序的一种改进,它的基本思想是:通过一趟排序将待排序记录分割成独立的两部分,
* 其汇总一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分继续进行排序,已达到
* 整个序列有序。快速排序是一种不稳定的排序算法,时间复杂度为O(n*lg(n))。
* @author win7
*
*/
public class QuickSort {
/**
* 一趟快速排序,使数组前半部分小于pivotkey,后半部分大于pivotkey
* @param array
* @param low
* @param high
* @return
*/
public static int Patition(int [] array,int low,int high){
int pivotkey=array[low];
while(low<high){
// System.out.println("low="+low+"||high="+high);
while(low<high&&array[high]>=pivotkey) high--;
array[low]=array[high];
while(low<high&&array[low]<=pivotkey) low++;
array[high]=array[low];
}
array[low]=pivotkey;
return low;
}
/**
* 使用递归的方式,对数组进行快速排序
* @param array
* @param low
* @param high
* @return
*/
public static int [] QSort(int [] array,int low,int high){
if(low>=high)return array;
int pivotkey=Patition(array,low,high);
// System.out.println("pivotkey="+pivotkey);
QSort(array,low,pivotkey-1);
QSort(array,pivotkey+1,high);
return array;
}
public static void main(String [] args){
int [] array={12,4,2,5,9,4,3,10,11,3};
for(int i=0;i<10;i++){
System.out.print(" "+array[i]);
}
System.out.println();
QuickSort.QSort(array, 0, 9);
for(int i=0;i<10;i++){
System.out.print(" "+array[i]);
}
}
}
快速排序算法代码实现
原文作者:排序算法
原文地址: https://blog.csdn.net/witsmakemen/article/details/8900576
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/witsmakemen/article/details/8900576
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。