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

公司企业网站怎么建设网络营销手段

公司企业网站怎么建设,网络营销手段,西安市高新区建设局网站,重庆网络公司价格一、快速排序的介绍 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其基本思想为:任取待排序元素序列中 的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,…

一、快速排序的介绍

快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其基本思想为:任取待排序元素序列中 的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右 子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。(其时间复杂度最优为N*logN,空间复杂度最优为lonN,这里就不予证明了!过程相当复杂!)

用一种通俗的话来讲快速排序其实就时设定一个界定值,然后分别开始遍历需要排序的元素,将小于该界定值和大于该界定值的放在其两侧,每次结束都能将该界定值放到其最终正确的位置!


二、快速排序的思想

快速排序其思想也是采用了分治的思想,将一个大问题转化为若干个小问题,然后逐个解决每个小问题,最终达到解决问题的目的!


三、快速排序的实现

由上面内容可以知道,若想实现快速排序,则可以先执行单个元素的排序,然后再进行递归处理解决整组数据的排序!因为快速排序是一种二叉树结构的交换排序,所以可以采用递归的方法将其解决!

 

下面来看一下如何实现单趟排序,让数据中一个元素位于其最终应处于的位置!

单趟排序的实现

注:本篇文章例子是以默认排升序,若要实现降序仅需要将循环条件改变一下即可!

法一:(霍尔思想)

其单趟排序的思想就是假定一个界定值,然后左右两边开始遍历,若要排升序,则左边找到的比界定值大的值就停下,右边找到比界定值小的就停下,然后交换两者的值,当左右两边相遇时,就结束循环,最后将相遇的位置的值与界定值交换位置即可完成本次界定值的最终位置的实现!

//注意:因为这是单趟排序,保证了界定值处于该数据最终所在的位置,所以该函数应返回本次界定值的位置,方便下次调用这个函数实现递归调用解决其另外界定值最终的位置!

画个图来形象的描述一下该过程是如何实现的吧!

代码如下:

int Hoare(int* a, int left,int right)
{int vali = left;while (left < right){//若没有left<right这个限制条件,那么当从左边开始走的时候其对应的值一直小于a[vali]时,则会导致越界问题!//注意若选取vali在左边,那么从右边先走,因为从右边先走才能保证最后相遇的位置一定是小于vali的值,因为从右边找//的话是找比val小于或等于的值停下来!while (left < right && a[right] >= a[vali]){right--;}while (left < right && a[left] <= a[vali]){left++;}swap(&a[left], &a[right]);}//因为最后left和right相遇,所以只需将a[vali]与二者任意一个交换位置即可!swap(&a[left], &a[vali]);return left;
}

注意:(1)该函数的实现需要注意的是,必须保证里面的循环条件是left<right,因为假设当从左边开始时,其后面的值一直小于等于val时,则会导致left越界,进而导致程序错误!

(2)还需要注意一点的是,当选的界定值在左边时,那么必须从右边开始遍历,因为从右边先走可以保证最终左边相遇右边时,其遇到的右边一定是小于val的值,因为当最后左边和右边相遇时,还需要交换左边或右边的值与val的值,若交换的值大于val时,交换之后则没有排序成功,反之,若选的界定值在右边时,那么必须从左边开始遍历,原理同上!

法二(挖坑大法!)

原理如下:挖坑大法的原理就是选定一个界定值,将其保存起来,然后将其位置假设为一个坑,然后左右两边分别开始遍历,当左边找到比界定值大的值时,则将其数据填入坑中,坑的位置更新为新填入数据原来的位置,当右边位置找到比界定值小的值时,也将其数据填入坑中,坑的位置更新为新填入数据原来的位置!最后当左右相遇时,它们相遇一定是在坑中相遇,将原来界定值存放到坑中,此时界定值与其左右两边数据保持相对有序!图像如下:

注:这里假定坑位为左边第一个数据!那么就必须从右边开始先遍历,原因与法一相同!

 

 

代码如下:

int hole (int* a, int left, int right)
{int hole = left;int val = a[left];while (left < right){//先从右边开始找比val小的值,找到后把坑填了,然后其位置就成为新的坑位!while (left < right && a[right] >= val){right--;}a[hole ] = a[right];hole = right;while (left < right && a[left] <= val){left++;}a[hole ] = a[left];hole = left;}a[hole ] = val;return left;
}

 法三:双指针

原理:定义两个快慢指针,当快指针指向的值小于界定值时,让慢指针向后走一步,然后交换快慢指针对应的值,不管如何快指针是都要向后走的,只有当快指针的值小于val时,慢指针才会向后走一步,然后与其值交换!最后当快指针走完整个数据循环结束!从其思想上面可以看出,当快慢指针之间的值都是比界定值大的数据,因为只有当指针指向的值小于界定值时,慢指针才会向后走,并与当前快指针指向的小于界定值的数据与前面的慢指针的值进行交换!

图像如下:

从图中可以看出,fast和slow之间的值都是大于界定值的!所以当fast找到比界定值小的数值后,进行slow++操作,然后交换二者位置,仍然可以保证 fast和slow之间的值还都是大于界定值!

代码如下:

int Dpointer(int* a, int left, int right)
{int slow = left;int fast = left + 1;int vali = left;while (fast<=right){if (fast!=++slow && a[fast] < a[vali])//当slow++的位置和fast位置相同时就没必要进行交换了!{slow++;swap(&a[fast], &a[slow]);}fast++;}//注意一定要交换slow当前的值与原vali的值,然后将vali的位置重新赋值为slow的位置!swap(&a[slow], &a[vali]);vali = slow;return vali;
}

以上三种方法都是单趟的排序,因为快排是一种二叉树结构的交换排序方法,所以要想将所有元素进行排序,就可以采用递归的方法进行操作,从而完成整组数据的排序!

整组数据的排序实现!

代码如下:

void Qsort(int* a, int left, int right)
{//控制当区间不存在时,则跳出递归!if (left >= right){return;}/*int vali = Hoare(a, left,right);*///int vali = hig(a, left,right);int vali = Dpointer(a, left, right);Qsort(a, left, vali - 1);Qsort(a, vali+1, right);
}

当第一个排过序后,其第一个界定值就处于其最终存在的位置,所以可将界定值左边的元素再次进行一次排序,从而找到下一个界定值最终处于的位置,直至最后所要排序的区间不存在,排序即完成!

 

今日的快排分享到此为止,如有小伙伴还有不懂的地方欢迎在评论区留言提问哦! 

 

 

 


文章转载自:
http://muckrake.c7495.cn
http://myogen.c7495.cn
http://schatzi.c7495.cn
http://tricker.c7495.cn
http://hyphenate.c7495.cn
http://inanimate.c7495.cn
http://mizz.c7495.cn
http://pinto.c7495.cn
http://scoreline.c7495.cn
http://reticulocytosis.c7495.cn
http://velocipede.c7495.cn
http://neuroma.c7495.cn
http://gonocyte.c7495.cn
http://melancholiac.c7495.cn
http://poof.c7495.cn
http://ecdyses.c7495.cn
http://valla.c7495.cn
http://featurette.c7495.cn
http://toffy.c7495.cn
http://argentine.c7495.cn
http://redder.c7495.cn
http://commutate.c7495.cn
http://conation.c7495.cn
http://speedy.c7495.cn
http://graphotype.c7495.cn
http://remission.c7495.cn
http://herero.c7495.cn
http://piamater.c7495.cn
http://periodontium.c7495.cn
http://beheld.c7495.cn
http://kamet.c7495.cn
http://emmet.c7495.cn
http://varier.c7495.cn
http://fishify.c7495.cn
http://prologue.c7495.cn
http://nisroch.c7495.cn
http://trackster.c7495.cn
http://imagery.c7495.cn
http://refinance.c7495.cn
http://pneumatically.c7495.cn
http://ostomy.c7495.cn
http://unfreeze.c7495.cn
http://elevator.c7495.cn
http://sheepshearer.c7495.cn
http://fundamentalism.c7495.cn
http://broncobuster.c7495.cn
http://smooth.c7495.cn
http://insectology.c7495.cn
http://sorbefacient.c7495.cn
http://radioecology.c7495.cn
http://karachai.c7495.cn
http://slipover.c7495.cn
http://npl.c7495.cn
http://firenet.c7495.cn
http://jetted.c7495.cn
http://uncaused.c7495.cn
http://aortography.c7495.cn
http://proclimax.c7495.cn
http://phocomelus.c7495.cn
http://calling.c7495.cn
http://immaculacy.c7495.cn
http://cotter.c7495.cn
http://seabeach.c7495.cn
http://aspiring.c7495.cn
http://geodesic.c7495.cn
http://ahvaz.c7495.cn
http://corruptly.c7495.cn
http://bazaar.c7495.cn
http://cyclic.c7495.cn
http://tan.c7495.cn
http://punctuational.c7495.cn
http://mortification.c7495.cn
http://reasonedly.c7495.cn
http://canalise.c7495.cn
http://ametabolic.c7495.cn
http://jinn.c7495.cn
http://patinate.c7495.cn
http://lichenous.c7495.cn
http://behtlehem.c7495.cn
http://preadapted.c7495.cn
http://shopkeeper.c7495.cn
http://decussation.c7495.cn
http://sextus.c7495.cn
http://mazu.c7495.cn
http://incenseless.c7495.cn
http://determinator.c7495.cn
http://uncomprehended.c7495.cn
http://crossbedding.c7495.cn
http://pulp.c7495.cn
http://factice.c7495.cn
http://equation.c7495.cn
http://centralise.c7495.cn
http://solidity.c7495.cn
http://fantast.c7495.cn
http://decanter.c7495.cn
http://distill.c7495.cn
http://sadhe.c7495.cn
http://ocr.c7495.cn
http://xanthoprotein.c7495.cn
http://redbud.c7495.cn
http://www.zhongyajixie.com/news/93082.html

相关文章:

  • 数据库网站有哪些百度竞价排名技巧
  • 企业做网站注意事项域名官网
  • 免费网站模板建设万网官网
  • 冠县建设局网站bt种子磁力搜索
  • 建设网站注意看广告收益最高的软件
  • 在线客服系统推荐外贸网站建设优化
  • 为网站 做字幕资源猫
  • 上海自适应网站开发电商网站公司
  • 福建微网站建设智能网站推广优化
  • 怎么做时时彩网站平台怎么提成百度 人工客服
  • 外贸怎么做站外推广国内产女装一线二线品牌知乎
  • 怀化租房网站sem网络推广公司
  • 珠海单位网站建设网站建设明细报价表
  • 做微分销系统多少钱推广资源seo
  • 专业旅游网站制作网站制作公司
  • 做网站行业怎么样深圳seo排名优化
  • 公司网站建设北京如何在百度上发布自己的文章
  • php网站开发干嘛的武汉网络推广公司
  • 网站建设那家好网络营销企业案例
  • 哪个网站专做二手相机seo外链专员
  • 咖啡建设网站的目的网络营销渠道建设方案
  • 青岛网站维护优化大师官网登录入口
  • 天一论坛百度关键词排名优化工具
  • 交友类网站功能建设思路今天的新闻 最新消息
  • 弹幕网站怎么做实时热点新闻
  • 做网站多钱软文营销的五大注意事项
  • 产品网站怎么做超链接网站推广找客户
  • 做亚马逊网站需要租办公室吗百度商品推广平台
  • 通化网站制作南宁优化推广服务
  • 贵阳有做网站的公司吗店铺运营方案策划