快速排序的简单实现(大话数据结构)
采用递归的方式,每次讲数组分成两部分,一部分是比数组指定一个值小的一部分是比指定值大的部分,常常指定的值就是传递过来数组的第一个,你也可以采用数组中的其他数字
最后对好的两部分还是按照上面的步骤进行分类,一直到分成的两部分的数组中只有一个值为止
import java.util.Arrays; public class QuickSort { void sort(int low,int end,int[]arr){ if(low<end){ int piov = partition(low, end, arr); sort(low,piov-1,arr); sort(piov+1,end,arr); } } int partition(int low ,int high, int []arr){ int piovkey=arr[low]; while(low<high){ while(low<high&&arr[high]>=piovkey){ high--; } swamp(low,high,arr); while(low<high&&arr[low]<=piovkey){ low++; } swamp(low,high,arr); //注意在这里每次交换的其实就是之前指定的那个值 } return low; } void swamp(int index1,int index2,int arr[]){ int temp=arr[index1]; arr[index1]=arr[index2]; arr[index2]=temp; } public static void main(String[] args) { int a[]={4,2,6,5,1,3}; new QuickSort().sort(0,a.length-1,a); System.out.println(Arrays.toString(a)); } }