快速排序
思路分析:
快速排序是实现应用中非常常用的一种算法, 时间复杂度为O(nlongn). 快速排序利用分治法, 随机选取一个point值, 然后把小于point的放在左边, 把大于point的放在右边, 经过这样一次操作, 左边都小于point, 右边都大于point. 然后分别对point左边和右边的数据继续进行改操作, 就可以得到一个排序数组.
重点是结束递归的条件, 当元素个数<=1的时候.
代码:
public class Quick { public void sort(int[] arrays){ int[] arr = quickSort(arrays, 0, arrays.length - 1); for(int i = 0; i < arr.length; i++){ System.out.println(arr[i]); } } public int[] quickSort(int[] arr, int left, int right){ if(left < right){ int index = partition(arr, left, right); //第一次分边 quickSort(arr, left, index - 1); //对左 quickSort(arr, index + 1, right); //对右 } return arr; } public int partition(int[] arr, int left, int right){ //分边并返回界点 int pivot = left; int index = pivot + 1; for (int i = index; i <= right; i++){ if(arr[i] < arr[pivot]){ swap(arr, i, index); index++; } } swap(arr, pivot, index - 1); return index - 1; } public void swap(int[] arr, int i, int j){ //交换 int temp = 0; temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } public static void main(String[] args) { int[] arr = {6,4,3,7,9,0}; Quick quick = new Quick(); quick.sort(arr); } }

浙公网安备 33010602011771号