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

花生壳做网站需要备案WordPress编辑文章空白

花生壳做网站需要备案,WordPress编辑文章空白,郑州工作,店面设计公司交换目录 1. 前言2. 交换排序3. 冒泡排序3.1 分析3.2 代码实现 4. 快速排序4.1 hoare版本4.1.1 分析4.1.2 hoare版本代码 4.2 挖坑法4.2.1 分析4.2.2 挖坑法代码实现 4.3 前后指针版本4.3.1 分析4.3.2 前后指针版本代码实现 1. 前言 在之前的博客中介绍了插入排序#xff0c;… 交换目录 1. 前言2. 交换排序3. 冒泡排序3.1 分析3.2 代码实现 4. 快速排序4.1 hoare版本4.1.1 分析4.1.2 hoare版本代码 4.2 挖坑法4.2.1 分析4.2.2 挖坑法代码实现 4.3 前后指针版本4.3.1 分析4.3.2 前后指针版本代码实现 1. 前言 在之前的博客中介绍了插入排序有需要的可以点这个链接: link这次来介绍交换排序包括冒泡和快排。 话不多说正文开始。 2. 交换排序 基本思想所谓交换就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置。 交换排序的特点是将键值较大的记录向序列的尾部移动键值较小的记录向序列的前部移动。 交换排序这里介绍冒泡排序和快速排序来一起看看。 3. 冒泡排序 动图形象的展示了冒泡排序的过程。 冒泡排序的特性总结 冒泡排序是一种非常容易理解的排序时间复杂度O(N^2)空间复杂度O(1)稳定性稳定 3.1 分析 交换排序肯定离不开交换就先写一个Swap。 void Swap(int* p1, int* p2) {int tmp *p1;*p1 *p2;*p2 tmp; }同样的方法先实现单趟排序如果前一个大于后一个就交换把最大的放在了最后。 得注意把控区间的位置如果if中的代码是a[i1]a[i],那么上面循环的区间就是从0到n-1。 第一趟的位置在n-1那么第j趟就是n-j。 所以对于总的来排就在外面套一个循环也就是 来看看使用结果 如果说没有给定的数据已经排好序了就不用经行交换了就加一个标志bool exchange false如果交换了就变为true。 3.2 代码实现 void Swap(int* p1, int* p2) {int tmp *p1;*p1 *p2;*p2 tmp; }void BubbleSort(int* a, int n) {for (int j 0; j n; j){bool exchange false;for (int i 1; i n - j; i){if (a[i - 1] a[i]){Swap(a[i - 1], a[i]);exchange true;}}if (exchange false)break;}}4. 快速排序 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法。 其基本思想为任取待排序元素序列中的某元素作为基准值按照该排序码将待排序集合分割成两子序列左子序列中所有元素均小于基准值右子序列中所有元素均大于基准值然后最左右子序列重复该过程直到所有元素都排列在相应位置上为止。 快速排序有三种实现方法下面来介绍。 4.1 hoare版本 hoare版本是怎么实现的 来看看动图 可以看到这里先选取了一个关键的值key 然后右边边开始走可以发现当右边找到第一个比key小的值就停下来。然后走左边左边找到第一个比key大的值然后左右两边交换交换完又继续。 当左右两边相遇就结束然后将key与这个位置交换。 为什么要相遇位置比key的值小 因为是从右边先走相遇就有两种情况 R遇到LR没有找到比key小的值就一直走直到遇见L相遇位置是L比key小。L遇到RR先走找到小于key的值就停下,L找大一直找没有找到但是遇见R就停下来相遇位置就是R找到小的位置也比key要小。 4.1.1 分析 用keyi来记录交换值的下标。 同样先看单趟排序在上面已经分析了。 首先右边先走找小那么它的代码是 左边找大。 但是走到结尾会发生错误可能会错位出现rightleft的情况所以在循环里面多加一个判断。 循环出来后就交换。 要让keyi到它最终的位置就得用while ( left right)来走当走完后交换key和left。任何继续排下一个数。 这里的keyi将区间分为三部分[begin,keyi-1],keyi,[keyi1,end]。 如果左边有序右边有序那么整体就有序。 用递归实现当这个区间只有一个值或者没有值时候结束。否则就调用左区间和右区间。 实现结果 4.1.2 hoare版本代码 void QuickSort(int* a, int begin, int end) {if (begin end)return;int left begin, right end;int keyi begin;while ( left right){// 右边找小while (left right a[right] a[keyi]){--right;}// 左边找大while (left right a[left] a[keyi]){left;}Swap(a[left], a[right]);}Swap(a[left], a[keyi]);keyi left;// [begin, keyi-1] keyi [keyi1, end]QuickSort(a, begin, keyi - 1);QuickSort(a, keyi 1, end);}4.2 挖坑法 看动图展示一下 把左边位置的值先挖出来用key先保存起来。形成了第一个坑位。 然后右边先走找到比key要小的值然后就把这个值取出来放到这个坑中。 然后形成了新的坑。 然后左边找大找到大以后将它扔到坑中。 直到它们两个相遇就终止了然后把key填上。 4.2.1 分析 挖坑法没有hoare版的复杂先找到右边找到小放在坑里左边找到大的放坑里在相遇时候把key放进去就行。 为了方便递归重新写递归部分在将坑位置的值传进去就行。 举个例子实现一下 4.2.2 挖坑法代码实现 int PartSort2(int* a, int begin, int end) {int key a[begin];int hole begin;while (begin end){// 右边找小填到左边的坑while (begin end a[end] key){--end;}a[hole] a[end];hole end;// 左边找大填到右边的坑while (begin end a[begin] key){begin;}a[hole] a[begin];hole begin;}a[hole] key;return hole; }void QuickSort(int* a, int begin, int end) {if (begin end)return;int keyi PartSort2(a, begin, end);QuickSort(a, begin, keyi - 1);QuickSort(a, keyi 1, end); }4.3 前后指针版本 cur遇到比key大的值就cur; cur遇到比key小的值就prev,交换prev和cur位置的值 cur先走 当cur遇到比key小的值 先加加prev再与cur交换。 然后cur继续往后走又遇见比key小的 然后先加加prev再与cur交换。 cur继续往后找小 cur比end大就结束然后将key与prev交换。 4.3.1 分析 先定义一下cur和prev让int cur prev 1int prev begin。 当cur比key的值小时就继续走否则就prev然后prev与cur交换。 就直接写一个循环就行将加加放在条件里面。 当cur出去后再将key与prev交换。 这里也是先写好单趟然后调用就行。 举个例子看看 4.3.2 前后指针版本代码实现 int PartSort3(int* a, int begin, int end) {int keyi begin;int prev begin;int cur prev 1;while (cur end){if (a[cur] a[keyi] prev ! cur)Swap(a[prev], a[cur]);cur;}Swap(a[prev], a[keyi]);keyi prev;return keyi; }void QuickSort(int* a, int begin, int end) {if (begin end)return;int keyi PartSort3(a, begin, end);QuickSort(a, begin, keyi - 1);QuickSort(a, keyi 1, end); 有问题请指出大家一起进步吧
http://www.dnsts.com.cn/news/118439.html

相关文章:

  • 哪个网站做的比较好打开网站notfound
  • 微信建立免费网站吗做动画在线观看网站
  • 广州番禺网站制作正规的合肥网站建设价格
  • 做网站前怎么建立数据结构外贸网站功能
  • 怎样在百度免费做网站专做国际时事评论网站
  • 济南 外贸网站建设个人网页设计实验报告
  • 网站建设无锡京伦科技做的网站如何
  • 郑州网站设计见效快网络营销推广的八大核心能力
  • 为什么浙江建设厅网站phpcms 网站名称标签
  • 上海高端点网站建设制作公司有哪些?|网站建设巴彦淖尔网站建设公司
  • 网站怎么发布到iis上ps做图 游戏下载网站
  • 国外做鞋子的网站有哪些网站建设宣传资料
  • 网站系统jsp模板互联网创业项目网站
  • 背景网站建设数码网站建设
  • 无锡网站推广哪家好连锁店进销存软件
  • 什么是网站建设的三次点击原则WordPress主题里的AD
  • 建设银行网站密码忘记了咋办嘉兴专业网站排名推广
  • 建网站添加付款方式wordpress如何销售卡密
  • vs2010做网站时间控件怎么做套版网站
  • 别墅设计装修设计福田做网站优化乐云seo
  • 网站建设公司怎么推广房地产开发公司属于什么行业类别
  • 建设岗位考试网站建设工程施工合同条例
  • 网站建设说明书资讯类网站源码
  • 网站搭建软件网站建设 书
  • dede 网站地图衡水学校网站建设
  • 如何做像淘宝一样的网站工商注册公司查名
  • 土特产网站建设状况竞价推广遇到恶意点击怎么办
  • 制作网站源码软件微信房地产网站建设
  • 庐江县住房和城乡建设局网站个人网站建设方案模板
  • 网站开发哈尔滨网站开发公司理财网站如何做推广