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

如何做网站首页关键词外贸怎么建立自己的网站

如何做网站首页关键词,外贸怎么建立自己的网站,网站制作jian she,山东住房和城乡建设厅网站一体化平台排序算法总结 冒泡排序介绍步骤(以升序排序为例)算法实现复杂度分析时间复杂度空间复杂度 是否为稳定排序:是稳定排序的定义 选择排序介绍步骤(以升序排序为例)算法实现复杂度分析时间复杂度空间复杂度 是否为稳定排序…

排序算法总结

  • 冒泡排序
    • 介绍
    • 步骤(以升序排序为例)
    • 算法实现
    • 复杂度分析
      • 时间复杂度
      • 空间复杂度
    • 是否为稳定排序:是
      • 稳定排序的定义
  • 选择排序
    • 介绍
    • 步骤(以升序排序为例)
    • 算法实现
    • 复杂度分析
      • 时间复杂度
      • 空间复杂度
    • 是否为稳定排序:否
      • 举个栗子!

今天先总结这俩,明天接着补~

冒泡排序

介绍

冒泡排序(Bubble Sort)是一种简单的比较排序算法,其工作原理类似于气泡在水中上升的过程。它通过重复遍历要排序的列表,比较相邻的两个元素,如果它们的顺序不正确就交换它们的位置。这个过程会持续进行,直到整个列表没有需要交换的元素为止。

步骤(以升序排序为例)

  1. 从列表的第一个元素开始,比较相邻的两个元素,如果前者比后者大,则交换它们的位置。
  2. 继续这个过程,直到遍历完整个列表。此时,最大的元素会“冒泡”到列表的末尾。
  3. 重复以上过程,每次遍历的范围逐渐减少(因为每次遍历都会把最大的元素放在正确的位置),直到整个列表有序。

算法实现

void bubbleSort(vector<int> &arr){int n=arr.size();//复习size()for(int i=0;i<n-1;i++){//控制比较次数for(int j=0;j<n-1-i;j++){//控制相邻元素的比较和交换,上层循环完一次,最大的数会到最右边固定住,所以循环次数是n-1-iif(arr[j]>arr[j+1]{swap(arr[j],arr[j+1]);}}}
}

复杂度分析

时间复杂度

(1)最好情况:当输入数组已经是有序的时候,冒泡排序只需要遍历一次数组即可完成排序。时间复杂度为 O(n)。
(2)最坏情况:当输入数组完全倒序时,每两个相邻元素都需要进行比较和交换,时间复杂度为 O(n^2)。
(3)平均情况:对于一个随机排列的数组,需要进行多次比较和交换操作,时间复杂度为 O(n^2)。

空间复杂度

冒泡排序是一种原地排序算法,它只需要一个额外的临时变量用于交换元素,不需要额外的空间。因此,其空间复杂度为 O(1)。

是否为稳定排序:是

稳定排序的定义

如果一个排序算法能够保证在排序后,数据中相同元素之间的相对顺序与排序前相同,那么这个算法就是稳定排序算法。

在冒泡排序中,当比较和交换相邻元素时,只有当前者大于后者时才会交换它们的位置如果两个元素相等,它们不会被交换,因此它们的相对顺序得以保持不变。

选择排序

介绍

选择排序(Selection Sort)工作原理是:每次从未排序的部分中找到最小(或最大)的元素,然后将其交换未排序部分起始位置,直到整个数组排序完成。

步骤(以升序排序为例)

1.从数组的第 i 个元素开始,找到从第 i 到第 n−1 个元素中最小的元素。
2. 将找到的最小元素第 i 个元素交换位置。
3. 重复步骤 1 和 2,每次从下一个位置开始,直到整个数组有序。

算法实现

void selectionSort(vector<int> &arr){int n=arr.size();//复习size()for(int i=0;i<n-1;i++){//对应步骤1的话int minIndex=i;// 当前最小元素的索引for(int j=i+1;j<n;j++){if(arr[j]<arr[minIndex]){minIndex=j;}}// 将找到的最小元素与第 i 个元素交换if(minIndex!=i)swap(arr[minIndex],arr[i]);}
}

复杂度分析

时间复杂度

(1)最好情况:即使数组已经完全有序,选择排序仍然需要遍历整个数组来寻找最小元素。因此,最好情况下的时间复杂度为O(n^2)。
(2)最坏情况:数组完全倒序时,同样需要遍历整个数组,且每次都需要交换元素。最坏情况下的时间复杂度为 O(n^2)。
(3)平均情况:对于一个随机排列的数组,需要进行多次比较和交换操作,时间复杂度为 O(n^2)。

空间复杂度

选择排序是一种原地排序算法,它只需要一个额外的临时变量用于交换元素,不需要额外的空间。因此,其空间复杂度为 O(1)。

是否为稳定排序:否

选择排序不是稳定排序算法。在选择排序中,当找到一个更小的元素并与前面的元素交换时,可能会改变相同元素之间的相对顺序。

举个栗子!

假设有一个数组 [3a, 3b, 2],其中 3a 和 3b 是两个值相同的元素,但它们的相对顺序在排序前是 3a 在前,3b 在后。我们的目标是通过选择排序对这个数组进行升序排序。
(1)第一轮:

  • 初始数组:[3a, 3b, 2]
  • 从索引 0 开始,寻找数组中最小的元素。
  • 比较 3a、3b 和 2,发现最小元素是 2,位于索引 2。
  • 将 2 与 3a 交换位置。
  • 结果数组:[2, 3b, 3a]
    (2)第二轮:
  • 数组状态:[2, 3b, 3a]
  • 从索引 1 开始,寻找子数组 [3b, 3a] 中的最小元素。 比较 3b 和3a,它们的值相同,因此最小元素可以认为是任意一个。 由于 3b 在索引 1,而 3a 在索引 2,但它们的值相同,所以不需要进行交换。
  • 结果数组:[2, 3b, 3a]
    (3)第三轮:
  • 数组状态:[2, 3b, 3a]
  • 从索引 2 开始,子数组只剩下 [3a],已经有序,无需操作。
  • 最终数组:[2, 3b, 3a]

可以发现:排序后的数组是 [2, 3b, 3a]。虽然数组已经按值正确排序,但原来的 3a 和 3b 的相对顺序发生了变化。
so,不稳定!

http://www.dtcms.com/wzjs/367905.html

相关文章:

  • 一个商务宣传怎么做网站合适鸿科经纬教网店运营推广
  • 孙红雷做的二手车网站近期网络舆情事件热点分析
  • 怎么在印度做网站百度客服在线咨询
  • 网页制作与网站建设宝典 pdf最佳的资源磁力搜索引擎
  • 机箱做的网站主机怎么查看ftp郑州高端网站建设哪家好
  • 佛山网站建设哪家专业产品网络推广深圳
  • 南昌企业做网站优化大师网页版
  • 摄影网站设计实现步骤肇庆百度快照优化
  • 老薛主机做多个网站脑白金网络营销
  • 天猫做网站优化近义词
  • 免费网站入口网站免费进ps软件照片查询百度图片搜索
  • 西安公司企业网站建设软件开发培训班
  • 哪个网站专门做商铺啊搜索引擎推广成功的案例
  • 整站优化网站报价百度下载并安装
  • 珠海网站网站建设品牌全案营销策划
  • 怎样查看别人网站流量一个好的产品怎么推广
  • 哈尔滨公司网站建设企业网站营销的典型案例
  • 北京 政府网站建设公司会计培训班多少钱
  • 四川酒店网站建设百度快速排名 搜
  • 做本地生活圈网站好吗b站视频推广app
  • 网站开发设计的地域分析专业seo网站
  • 做游戏代练去那个网站天津百度推广公司电话
  • 济南网站制作平台如何给公司做网络推广
  • 唐山网站制作案例网络营销企业有哪些公司
  • 自己做网站要买服务器吗互联网+营销策略怎么写
  • 做网站和seo流程官方网站营销
  • 网站开发跟app开发的差别百度指数峰值查询
  • 物业公司排名2020最新排名提升seo排名
  • 现在流行的网站开发语言网络推广公司怎么找客户
  • 公司开通网站长沙网站制作主要公司