数据结构和算法--SE005(快速排序)
2019-08-17 18:35
686 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_37676429/article/details/99696268
快速排序
快速排序(Quicksort)是对冒泡排序Plus版本。基本思想是:通过一趟排序将要排序的数据分割成独立的两
部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排
序, 整个排序过程可以递归进行,以此达到整个数据变成有序序列。
快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。具体算法描述如下:
- 从数列中挑出一个元素,称为 “基准”(pivot);
- 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;
- 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。
动图演示:
代码:
[code]function quickSort(arr, left, right) { var len = arr.length, partitionIndex, left = typeof left != 'number' ? 0 : left, right = typeof right != 'number' ? len - 1 : right; if (left < right) { partitionIndex = partition(arr, left, right); quickSort(arr, left, partitionIndex-1); quickSort(arr, partitionIndex+1, right); } return arr; } function partition(arr, left ,right) { // 分区操作 var pivot = left, // 设定基准值(pivot) index = pivot + 1; for (var i = index; i <= right; i++) { if (arr[i] < arr[pivot]) { swap(arr, i, index); index++; } } swap(arr, pivot, index - 1); return index-1; } function swap(arr, i, j) { var temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; }
还要再好好的看下!!!
相关文章推荐
- 数据结构与算法——快速排序
- 浅谈算法和数据结构: 四 快速排序
- scala数据结构和算法-04-快速排序实现
- 数据结构常用算法复习---快速排序
- python算法与数据结构-快速排序(36)
- 【算法与数据结构】冒泡、插入、归并、堆排序、快速排序的Java实现代码
- // 快速排序中的划分 ,<<数据结构》算法10.6(b)
- 数据结构和算法学习七,之快速排序
- 数据结构和算法-011 数组排序 快速排序
- [数据结构和算法]快速排序
- 数据结构和算法学习系列之快速排序的Partition函数一种实现方法
- 【数据结构】算法10.6-10.8 快速排序
- 【数据结构和算法之排序】快速排序
- 一步步学习数据结构和算法之快速排序效率分析及java实现
- 一步步学习数据结构和算法之快速排序效率分析及java实现
- 快速排序中的划分算法——数据结构
- 算法与数据结构-单向链表的直接插入排序和快速排序
- 挖掘算法中的数据结构(三):O(n*logn)排序算法之 快速排序(随机化、二路、三路排序) 及衍生算法
- 【数据结构&&算法系列】快速排序简单介绍及实现
- T-SQL实现数据结构中的冒泡算法和快速排序