说到排序算法,就不得不说优雅而简练的一种算法——快速排序算法。
快速排序是当前使用率最多,效率最高,速度最快的一种排序算法。
作为排序算法界的扛把子,快速排序算法无疑是程序员首选的一种排序算法。
首先选择一个数据作为基准,然后再让基准数和其他数据进行对比。
先让基准数从数组的右边依次遍历,直到找到小于基准数数值的数,并将该数与基准数相互交换位置
再让基准数从数组的左边依次遍历,直到找到大于基准数数值的数,并将该数与基准数相互交换位置
循环以上步骤,当以上的步骤执行完毕之后,就确定的基准数的位置。
然后将数组以基准值为基准划分为左右两个区域
基准值左边的区域中的数值比基准值小,基准值右边的区域中的数值比基准值大。
然后将左区和右区以同样的方式进行判断和换位。
好了,废话不多说,小的给各位看官上代码。
public static int quicksort(int[] array,int lo,int hi){ //传入数组和索引,lo = [0] ,hi = [array.length() - 1]
int key = array[lo]; //定义变量,为变量赋值为第一个数
//判断 如果数组中不是只有一个数据,则需要进行排序
while( lo < hi){
//判断如果最后的数据大于或者等于基准值则将最大索引依次递减,直到找到比基准值小的数
while(lo < hi&& array[hi] >= key){
hi--;
}
//如果找到符合条件的数值,则将基准值和当前值相互换位
//判断如果第一个数据小于或等于基准值则将最小索引依次递 增,直到找到比基准值大的数
while(lo < hi&&array[lo] <= key){
lo++;
}
//如果找到符合条件的数值,则将基准值和当前值相互换位
}
array[hi] = key; //将基准值记录到尾
return hi; //返回基准值索引public static void sort(int[] array,int lo,int hi){
if(lo >= hi){}
以上是本人对于快速排序的理解
如有不妥之处,请各位大佬指出
谢谢