快速排序
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package com.fh.algo; /** * 排序算法 * * @author * @create 2018-05-26 下午1:00 **/ import org.junit.Test; /** * 排序算法的学习 */ public class Sort { private int[] array = {4,2,5,6,7,3,1}; @Test public void quickSort(){ quickSort(0,array.length-1); for (int item: array) { System.out.println(item+"\n"); } } public void quickSort(int left,int right){ int i,j,t,temp; i=left; j=right; if(left>right){ return; } temp=array[left];//temp保存基准数 while (i!=j){ //和基数进行比较--小于基数的时候停止 //从右开始 while (array[j]>=temp && i<j){ j--; } while (array[i]<=temp && i<j){ i++; } if(i<j){ //数据交换 t=array[i]; array[i]=array[j]; array[j]=t; } } //基数归位 array[left]=array[i]; array[i]=temp; quickSort(left,i-1); quickSort(i+1,right); } }
快速排序算法实践
大致思路:
1、选择基准数据,选择左右指针
2、从右开始比较选择比基准数小的,从左开始选择比基准数大的数据
3、对数据进行交换
4、移动基准数据到相依位置,保证右边的数据大于基准数,左边的小于基准数据
5、重复第一步