学习链接:坐在马桶上看算法:快速排序 Java代码: ...
分类:
编程语言 时间:
2017-10-10 16:36:11
阅读次数:
143
这是一种比较高效的排序法 具体是找一个基准值,这个值是数组中的任意一个,有的人喜欢挑中间的,其实随便 使用splice删除掉基准元素,获得新的数组 将新数组的值和基准值进行比较,如果小于基准值集中放左边数组,大于基准值放右边数组(升序) 然后采用递归就能获得最终的数组 举个例子 一个数组是[1,3, ...
分类:
编程语言 时间:
2017-10-10 13:04:44
阅读次数:
179
1 void quickSort(LineList R[], int first, int end) 2 { 3 int i, j; 4 LineList temp; 5 i = first; 6 j = end; 7 temp = R[i]; 8 R[0] = R[i]; 9 10 while (... ...
分类:
编程语言 时间:
2017-10-09 20:55:50
阅读次数:
124
快速排序之所以比较快,是因为相比冒泡排序,每次交换是跳跃式的。每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全 部放到基准点的右边。这样在每次交换的时候就不会像冒泡排序一样只能在相邻的数之间进行交换,交换的距离就大得多了。因此总的比较和交换次数就少了,速 ...
分类:
编程语言 时间:
2017-10-09 16:41:54
阅读次数:
238
public class SortTest { public static void main(String[] args) { int[] arr = {23, 45, 12, 8, 3, 2, 55, 34, 87, 21}; // buddleSort(arr); // choiceSort(... ...
分类:
编程语言 时间:
2017-09-30 21:01:06
阅读次数:
224
1 void quicksort(int l,int r){ 2 int i,j,mid,p; 3 i=l;j=r; 4 mid=a[(l+r)/2]; 5 do{ 6 while(a[i]<mid) i++; 7 while(a[j]>mid) j--; 8 if(i<=j){ 9 p=a[i]; ...
分类:
其他好文 时间:
2017-09-23 23:27:36
阅读次数:
252
Quick の implementation 快排,就像它的名字一定,风一样的快。基本上算是最快的排序算法了。快排的基本思想是选择一个切分的元素。把这个元素排序了。所有这个元素左边的元素都小于这个元素,所有这个元素右边的元素都大于这个元素。接着再把左右2个数组分别排序。 假设你有如下数组 (所有 i ...
分类:
编程语言 时间:
2017-09-19 15:27:35
阅读次数:
157
//从大到小排序 ///三个参数 a要排序的 数组, l扫左边的 r扫右边 void quickSort(int a[],int l, int r){ /// 左边要小于 右边才有意义 if (l x) i++; if (i < j) a[j--] = a[i]; } ... ...
分类:
编程语言 时间:
2017-09-14 10:48:27
阅读次数:
182
我们平时说的“排序”,指的是内部排序,即使用内存资源进行排序的。除了内部排序之外,还有外部排序。本文主要介绍内部排序。 内部排序分为插入排序、选择排序、交换排序、归并排序等。其中,插入排序又分为直接插入排序和希尔排序;选择排序分为简单选择排序和堆排序;交换排序又分为冒泡排序和快速排序。 也就是说,本 ...
分类:
编程语言 时间:
2017-09-10 19:02:35
阅读次数:
208
排序算法: 快排: o(nlogn) o(1)不稳定 归并:o(nlogn) o(n) 稳定 基数: 冒泡 睡眠 面条 烙饼 1、quicksort: 返回条件:start >=end private = a[start]+a[end]/2 while(left <= right) while(le ...
分类:
编程语言 时间:
2017-09-10 14:21:04
阅读次数:
220