快速排序算法
Posted chenweichu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速排序算法相关的知识,希望对你有一定的参考价值。
1、快速排序算法
public static void main(String[] args) { //Scanner scan=new Scanner(System.in); int[] arr=new int[10]; for(int i=0;i<10;i++){ arr[i]= new Random().nextInt(100);//scan.nextInt(); } QuickSort(arr, 0, arr.length-1); for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } public static void QuickSort(int[] arr,int low,int high){ int i,j,temp,t; if(low>high){ return; } i=low; j=high; //temp就是基准位 temp = arr[low]; while (i<j) { //先看右边,依次往左递减 while (temp<=arr[j]&&i<j) { //6<5 9 j--; } //再看左边,依次往右递增 while (temp>=arr[i]&&i<j) { //6>=7 i++; } //如果满足条件则交换 if (i<j) { t = arr[j]; arr[j] = arr[i]; arr[i] = t; } } //最后将基准为与i和j相等位置的数字交换 arr[low] = arr[i]; arr[i] = temp; //递归调用左半数组 QuickSort(arr, low, j-1); //递归调用右半数组 QuickSort(arr, j+1, high); }
1.1.快速排序算法代码解析:
- 两边同时扫描,符合条件指针向中间移动,left++,right--
- 当扫描不符合立即停下,当两边都扫描出不符合条件的位置时,交换两边位置的值。
- 直到两边指针碰在一起时整个数据扫描完,剩下处理两边指针相同位置的值
- 经过上面步骤整个数组分成两部分,通过j指针位置作为区分左右边,左边数组小于右边。通过上面步骤递归执行两边数组,直到完成
以上是关于快速排序算法的主要内容,如果未能解决你的问题,请参考以下文章