网上关于快速排序的算法原理和算法实现都比较多,不过java是实现并不多,而且部分实现很难理解,和思路有点不搭调.所以整理了这篇文章.如果有不妥之处还请建议.首先先复习一些基础. 1.算法概念. 快速排序(Quicksort)是对冒泡排序的一种改进.由C. A. R. Hoare在1962年提出. 2.算法思想. 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行…
public class QuickSortTest{ //比较与交换 private static int partition(int[] source, int low, int hight) { int key = source[low]; while (low < hight) { while (low < hight && source[hight] >= key) { hight --; } source[low] = source[hight]; while…
int Partition(int a[], int low, int high) { int x = a[high];//将输入数组的最后一个数作为主元,用它来对数组进行划分 int i = low - 1;//i是最后一个小于主元的数的下标 for (int j = low; j < high; j++)//遍历下标由low到high-1的数 { if (a[j] < x)//如果数小于主元的话就将i向前挪动一个位置,并且交换j和i所分别指向的数 { int temp; i++; temp…
最近又翻看了一下数据结构(数据结构学渣). 以前总是看不懂,连冒泡和选择排序都要纠结半天,后来才慢慢有意识能区分开来. 当真的理解了快速排序之后,才觉得,这是个很赞的排序,很容易理解. 于是简单的,模仿c的做法,实现了javascript上的排序,目前只有冒泡.选择和快速排序.//不过貌似快速排序用到了传递的性质,也许我应该改改. function bubbleSort(arr){ console.log("冒泡排序:"); var len = arr.length; for(var…