快速排序算法那点事

快速排序算法是对冒泡排序算法的有力补充,其主要是思想是:

从待排序队列中选取一个参照值,通过这个参照值将待排序队列分割成左右两部分,保证左边的所有值小于选取的这个参照值,右边的所有值大于这个参照值。然后再按照快速排序的方法对这两边的值进行排序,整个算法是采用递归方式进行的,直到整个序列有序。

 

其Java语言的实现如下:

public class QuickSort { /* * 快速排序的原理是首先找出一个关键数据,通过这个关键数据将待排序数据分割成左右两部分,左边所有数据 * 比关键数据值小,右边所有数据比关键数据大,通过递归方式可以将 */ public static void sort(int[] arr, int left, int right) { int i = left; int j = right; int startValue = arr[left]; int temp; while (true) { while (–j > left && arr[j] > startValue); while ((++i) < right – 1 && arr[i] < startValue); if (i >= j) break; // 大于起始值最左边的值 与 小于起始值的最右边的值互换 temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } //j是最后一个比关键数据小或者等于的值 arr[left] = arr[j]; arr[j] = startValue; if (j > left) sort(arr, left, j); if (i < right) sort(arr, i, right); } public static void main(String[] args) { int[] pData = new int[1000000]; for (int i = 0; i < 1000000; i++) pData[i] = (int) (Math.random() * 100); long startTime = System.currentTimeMillis(); QuickSort.sort(pData, 0, pData.length); long endTme = System.currentTimeMillis(); System.out.println(endTme – startTime); print(pData); } public static void print(int[] arr) { for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + “:”); } System.out.println(); } }

 

快速排序算法的速度相对冒泡排序有一个质的飞跃。

 

要将算法进行到底~~~~~~~~~~~~

 

点赞