当前位置: 首页 > news >正文

东莞网站建设管理东莞专业网站制作设计

东莞网站建设管理,东莞专业网站制作设计,wordpress 插件管理,wordpress打开过慢快速排序 1.快速排序原理 快速排序是一种应用很广泛的排序算法#xff0c;与归并排序类似#xff0c;快速排序也采用了分治策略。对于一个待排序的数组A[p...r]进行快速排序#xff0c;根据分治思想#xff0c;可以分为如下三个步骤#xff1a;   - 分解#xff1a;数组…快速排序 1.快速排序原理   快速排序是一种应用很广泛的排序算法与归并排序类似快速排序也采用了分治策略。对于一个待排序的数组A[p...r]进行快速排序根据分治思想可以分为如下三个步骤   - 分解数组A[p...r]被划分为两个有可能为空子数组A[p...q-1]和A[q1...r]使得A[p...q-1]中的每一个元素都小于等于A[q]而A[q]也小于等于A[q1...r]中的每一个元素。其中计算下标q也是划分过程的一部分。   -解决通过递归调用快速排序对子数组A[p...q-1]和A[q1...r]进行快速排序。   -合并注意到与归并排序不同快速排序算法中的子数组都是基于原址排序的所以不需要合并操作即数组A[p...r]已经排好了顺序。   对于快速排序来说算法的关键是找到正确的划分q该过程的伪代码如下 PARATITION(A, p, r)x A[r]i p - 1for j p to r - 1if A[j] A[r]i i 1exchange A[i] with A[j]exchange A[i 1] with A[r]return i 1   下面这张图显示了该过程。   随着算法的执行数组被划分为4个可能为空区域如下图所示   1. 若p k i则A[k] x   2. 若i1 k j-1则 A[k] x   3. 若j k r则A[k]与x的大小关系不明确   4. 若k r则A[k] r。 2.快速排序的性能   根据上面的分析快速排序的运行时间依赖于对待排序数组A[p...r]的划分是否平衡而是否划分平衡依赖于划分元素的选取如果划分是平衡的那么快速排序算法性能与归并排序一样如果划分不平衡那么快速排序的性能就接近于插入排序了注意这里是接近而不是相等   结论平均情况下快速排序的时间复杂度与最好划分情况下数量级一致均为O(nlogn)注意这里是数量级一致并不意味着时间复杂度相等 3.快速排序的随机化版本   上述的快速排序在讨论平均性能时我们假设输入数据的所有排列都是等概的。但实际情况可能并非如此有可能出现元素大小分布极不均衡的情况。可以采用一种称为随机抽样random sampling的随机化技术使主元A[r]是一个随机抽取于数组中的元素因为主元元素是随机抽取的我们期望在平均情况下对输入数组的划分是比较均衡的。采取这样的操作只需要在原来的算法上改动很小的部分即可伪代码如下 RANDOMIZED-PARTITION(A, p, r)i RANDOM(p, r)exchange A[r] with A[i]return PARATITION(A, p, r) 4.代码实现(C/C,Java,Python)   实现了快速排序最基本算法没有考虑随机化版本。 C #include stdio.h #include stdlib.hvoid swap(int* a, int* b) {int tmp;tmp *a;*a *b;*b tmp; }int partition(int* array, int low, int high) {int mid, index;mid low - 1;for(index low; index high; index){if(array[index] array[high]) {mid 1;swap(array[mid], array[index]);}}swap(array[mid 1], array[high]);return mid 1; }void quicksort(int* array, int low, int high) {int mid;if(low high){mid partition(array, low, high);quicksort(array, low, mid - 1);quicksort(array, mid 1, high);} }int main() {int *array, length, i;printf(Enter the length of array: );scanf(%d, length);array (int* )malloc(length * sizeof(int));for(i 0; i length; i)scanf(%d, array[i]);quicksort(array, 0, length - 1);for(i 0; i length; i)printf(%d , array[i]);free(array);return 0; } C #include iostream #include vector using namespace std;void swap(int* a, int* b) {int tmp;tmp *a;*a *b;*b tmp; }int partition(vectorint array, int low, int high) {int mid, index;mid low - 1;for(index low; index high; index){if(array[index] array[high]) {mid 1;swap(array[mid], array[index]);}}swap(array[mid 1], array[high]);return mid 1; }void quicksort(vectorint array, int low, int high) {int mid;if(low high){mid partition(array, low, high);quicksort(array, low, mid - 1);quicksort(array, mid 1, high);} }int main() {vectorint array;int length, element;cout Enter the length of array: ;cin length;cout Enter the element of array: ;for(int i 0; i length; i){cin element;array.push_back(element);}quicksort(array, 0, length - 1);for(int i 0; i length; i)cout array[i] ;return 0; } Java import java.util.*;public class QuickSort {public static void display(IteratorInteger it) {while(it.hasNext()) {Integer element it.next();System.out.print(element );}}public static void main(String[] args) {ArrayListInteger array new ArrayListInteger();Scanner in new Scanner(System.in);System.out.print(Enter the length of array: );int length in.nextInt();System.out.print(Enter the element of array: );for(int i 0; i length; i)array.add(in.nextInt());in.close();Sort sort new Sort(array);sort.quickSort(sort.getLow(), sort.getHigh());display(array.iterator());} }class Sort {public Sort(ArrayListInteger array) {this.array array;}public int getLow() {return 0;}public int getHigh() {return array.size() - 1;}public void quickSort(int low, int high) {int mid;if(low high) {mid partition(low, high);quickSort(low, mid - 1);quickSort(mid 1, high);}}public int partition(int low, int high) {int index low - 1;for(int i low; i high; i) {if(array.get(i) array.get(high)) {index 1;int[] list swap(array.get(index), array.get(i));array.set(index, list[0]);array.set(i, list[1]);}}int[] list swap(array.get(index 1), array.get(high));array.set(index 1, list[0]);array.set(high, list[1]);return index 1;}public int[] swap(int a, int b) {int[] list new int[2];list[0] b;list[1] a;return list;}private ArrayListInteger array; } Python quickSort.py def swap(A, i, j):tmp A[j]A[j] A[i]A[i] tmpdef partition(A, low, high):mid low - 1for i in range(low, high):if A[i] A[high]:mid 1swap(A, mid, i)swap(A, mid 1, high)return mid 1def quickSort(A, low, high):if low high:mid partition(A, low, high)quickSort(A, low, mid - 1)quickSort(A, mid 1, high) test.py import quickSortA [8, 7, 3, 0, 5, 4, 2, 9, 6, 1, 4] quickSort.quickSort(A, 0, len(A) - 1) print A 转载于:https://www.cnblogs.com/zhxbao/p/quick_sort.html
http://wiki.neutronadmin.com/news/214574/

相关文章:

  • 微网站作用手机php网站开发
  • qq官方网站登录wordpress 4.9.8官方版
  • 网站开发技术历史网络营销策略的演变
  • 建设优质网站需要什么微信代码小程序
  • 现代化的中国风网站定制物品的app有哪些
  • 免费建商城网站哪个好汕头新导网络公司
  • 微信微网站开发猎头招聘网官网
  • 西安网站制作工程师线上推广策划方案范文
  • 上线了怎么建网站村庄建设网站
  • 网站建设模块一项目三电子商务网站建设实践报告摘要
  • 如何做网站美工乔拓云官网免费
  • 如何快速建网站seo网络推广公司报价
  • 番禺网站开发服务深圳门户网站
  • WordPress文档批量发布接口seo基本步骤顺序
  • 企业的做网站桂林建设银行招聘网站
  • 网站收录突然全部没有了个人可以做推广的平台有哪些
  • 东莞网站新站排名无障碍网站开发
  • 天河移动网站建设云南网站制作怎么计费
  • 音乐网站建设报告微商城网站建设推广
  • 网站的动态文字是怎么做的好的网站设计
  • 网站网站服务器青岛营销网站建设
  • 清空网站空间做网站做得好的公司有哪些
  • 建设建网站WordPress建立个人相册
  • 银川网站建设nx110常州营销网站建设
  • 哪个企业的网站做的比较好当当网的网站建设要求
  • 小企业网站模板个人音乐网站建设
  • 网站建设所需要软件机加工接单什么平台好
  • 新乡集团网站建设软文文案
  • 招聘网站建设策划书防控政策优化
  • 做健身网站开题报告可以做书的网站