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

备案 网站语言lollipop Wordpress

备案 网站语言,lollipop Wordpress,网站开发页面怎么进,微商分销商城模块源码目录 一. 冒泡排序 基本思想 代码实现 时间和空间复杂度 稳定性 二. 快速排序 基本思想 代码实现 hoare法 挖坑法 前后指针法 时间和空间复杂度 稳定性 一. 冒泡排序 基本思想 冒泡排序是一种交换排序。两两比较数组元素,如果是逆序(即排列顺序与排序后…

   

                             

目录

一. 冒泡排序

基本思想

代码实现

时间和空间复杂度

稳定性

二. 快速排序

基本思想

代码实现

hoare法

挖坑法

前后指针法

时间和空间复杂度

稳定性


一. 冒泡排序

       基本思想

           冒泡排序是一种交换排序。两两比较数组元素,如果是逆序(即排列顺序与排序后的顺序相     反)就交换,直到所有元素都有序为止。

      方法步骤:                   

          ① 比较相邻的元素。如果第一个比第二个大,就交换他们两个。

          ② 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后                  的元素会是最大的数

          ③ 针对所有的元素重复以上的步骤,除了最后一个。

          ④ 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较

        图示

        

代码实现

  

//冒泡排序
void BubbleSort(int* a, int n)
{for (int i = 0; i < n - 1; i++){int flag = 0; //作为判断是否交换的标志for (int j = 1; j < n - i; j++){if (a[j-1] > a[j]){flag = 1;int tmp = a[j-1]; //交换a[j-1] = a[j];a[j] = tmp;}}if (flag == 0)break;}
}

时间和空间复杂度

     若初始序列为正序序列,则只需进行一趟排序,在排序过程中进行n-1次比较不移动元素;若初始序列为逆序序列,则需进行n-1趟排序n(n-1) / 2次比较,每次比较都需要移动 3 次,移动次数为  3n(n-1) / 2.

    时间复杂度:O(n^2)

    空间复杂度:O(1)

稳定性

     冒泡排序:稳定排序

二. 快速排序

      基本思想

       任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止
 

     方法步骤:       

  1. 从数列中挑出一个元素,称为 "基准"(pivot);

  2. 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;

  3. 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序;

     图示

代码实现

   

 hoare法

        思想方法:

           定义两个指针 left 和 right,分别指向左边和右边,左指针从左向右找大( 大于pivotkey),右      指针从右向左找小(小于pivotkey),左大右小就交换,相遇时与基准值交换

         图解:

               

        

 

int PartSort(int* a, int left, int right) //给数组分区,返回枢轴元素下标
{int pivotkey = left;while (left < right){//右边找比pivotkey小的while (left < right && a[right] >= a[pivotkey])right--;//左边找比pivotkey大的while (left < right && a[left] <= a[pivotkey])left++;Swap(&a[left], &a[right]);}Swap(&a[left], &a[pivotkey]); //把记录的枢轴元素,交换到枢轴位置return left;   //返回枢轴所在的位置下标
}

   

 挖坑法

      思想方法

              定义两个指针 left 和 right,分别指向左边和右边,先将第一个数据元素放在临时变量 pivotkey 中,形成一个坑位右指针先走,当指向的值小于 pivotkey 就停下,形成新的坑位;让左指针走,当指向的值大于 pivotkey 就停下,使其形成此次的新坑位,直到两指针相遇,把pivotkey的值放入坑中。

 

        图解:

         

           


int PartSort(int* a, int left, int right) //给数组分区,返回枢轴元素下标
{int pivotkey = a[left]; //保存第一个数据元素的值while (left < right){while (left < right && a[right] >= pivotkey) //找小{right--;}a[left] = a[right]; //右边形成新的坑while (left < right && a[left] <= pivotkey) //找大{left++;}a[right] = a[left]; //左边形成新的坑}a[left] = pivotkey;return left;
}

  前后指针法

      思想方法:

        定义两个指针 prev 和 cur ,初始时,prev指针指向序列开头,cur指针指向prev指针的后一个位置;cur的值与pivotkey的值比较,cur的值小,prev先后移一步,cur再后移;当cur的值大时,就prev的值与cur的值交换;直到cur为空时,prev的值与pivotkey的值交换。

       图解:

              

       


int PartSort(int* a, int left, int right) //给数组分区,返回枢轴元素下标
{int prev = left;int cur = left + 1;int pivotkey = left;while (cur <= right){if (a[cur] < a[pivotkey] && ++prev != cur)Swap(&a[cur], &a[prev]);cur++;}Swap(&a[pivotkey], &a[prev]);return prev;
}

时间和空间复杂度

         在最优情况下,partition每次都划的很均匀,此时时间复杂度为O(nlogn);平均情况下,其时   间复杂度也为O(nlogn)。在最坏的情况下,待排序的序列为正序或逆序时,递归树是一棵斜树,   此时,快速排序会堕落为冒泡排序,其时间复杂度为O(n^2),不过可以通过优化,使其提升为O(nlogn),总的来说还是O(nlogn)。

        空间复杂度,主要是递归造成的栈空间的使用,最好情况及平均情况下,树的递归深度为logn,空间复杂度均为O(logn);最坏情况,空间复杂度为O(n).

       时间复杂度:O(nlogn)

       空间复杂度:O(logn)

  稳定性

      由于元素的比较和交换是跳跃进行的,因此

      快速排序:不稳定排序

http://www.yayakq.cn/news/756867/

相关文章:

  • 网站seoapp商丘市做1企业网站的公司
  • 建设高校实验教学网站的作用做本地网站卖
  • 哪家网站做的好滁州网站建设电话
  • 住房和建设局网站产品网站怎么做
  • 清远建网站的公司盗版小说网站怎么赚钱
  • 哪个网站做中高端衣服html企业网站模板
  • 凡科网站 怎么开支付另一更新正在进行 wordpress
  • 最专业的房地产网站建设扫码登记小程序怎么做
  • 江河建设集团有限公司网站如何开一家公司创业
  • cdr里做网站超级链接哪些网站用wordpress
  • 做空包网站合法吗seo公司推荐推广平台
  • 永久免费wap自助建站网络优化是做什么的
  • 思源黑体可以做网站有没有做.net面试题的网站
  • 企业营销型网站策划书承接做网站
  • 厦门网站建设团队桂林生活网电脑版
  • 做网站租服务器吗教育网站制作论文
  • 营销型网站建设用途请专业做网站的老师
  • 网站推广方案编写廊坊建设质量监督局网站
  • 南通做网站的公司沈阳专业网站制作团队
  • 网站做好了 后期怎么做什么是电子商务?
  • 做明信片的网站高端网站推广
  • 请问下网站开发怎么弄电影院网站建设方案
  • 四川手机网站设计方案wordpress修改标签
  • 个人网站制作多少钱怎么添加字体到电脑wordpress
  • 游戏网页设计模板优化网站排名
  • 旅游网站建设目的西安网站托管排名
  • 帝国织梦wordpress网站seo文章
  • 哇哈哈网站建设策划书电子工程王北辰
  • 建设一个网站引言彩页设计费多少
  • 建设招标网是什么网站要建设一个网站需要什么手续