由于时间原因,快速排序的思想在这里就不讲了(不明白的请百度)。
下面直接上代码:
public class QuickSort {
//找到分割数组的界点下标
public int getMiddle(int[] array,int start,int end){
int temp=array[start];
while(start<end){
//注意:条件始终包含start<end
while(start<end && array[end]>=temp){
end--;
}
array[start]=array[end];
//注意:条件始终包含start<end
while(start<end && array[start]<=temp){
start++;
}
array[end]=array[start];
}
//这里别忘了赋值
array[start]=temp;
//返回分割点下标
return start;
}
//利用递归的思想,对数组Array进行快速排序
private void _quickSort(int[] array, int start,int end){
if(start<end){
int middle=getMiddle(array, start, end);
_quickSort(array, start, middle-1);
_quickSort(array, middle+1, end);
}
}
//把不必要的参数(起点和终点)抽离,形成更简洁的函数
public void quickSort(int[] array){
//判断数组非空
if(array.length>0){
_quickSort(array, 0, array.length-1);
}
}
public static void main(String[] args){
//用数据测试代码
int[] array={10,12,3,51,1,8,100};
QuickSort quickSort=new QuickSort();
quickSort.quickSort(array);
for(int i=0;i<array.length-1;i++){
System.out.print(array[i]+",");
}
System.out.print(array[array.length-1]);
}
}
快速排序 Java实现
最新推荐文章于 2023-05-14 17:18:44 发布