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

德化网站建设杭州关键词排名系统

德化网站建设,杭州关键词排名系统,山东今天最新疫情公布,叮当设计网ppt模板免费冒泡排序是初学C语言的噩梦,也是数据结构中排序的重要组成部分,本章内容我们一起探讨冒泡排序,从理论到代码实现,一步步深入了解冒泡排序。排序算法作为较简单的算法。它重复地走访过要排序的数列,一次比较两个元素&am…

冒泡排序是初学C语言的噩梦,也是数据结构中排序的重要组成部分,本章内容我们一起探讨冒泡排序,从理论到代码实现,一步步深入了解冒泡排序。

排序算法作为较简单的算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。

算法步骤

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

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

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

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

动图演示

可能大家对文字描述不敏感,但是这副图完美的呈现了冒泡排序的实现过程。

本图来源于网络

时间复杂度

什么时候最快

这点不用想,当输入的数据已经是正序时(都已经是正序了,我还要你冒泡排序有何用啊)。

什么时候最慢

这个就与上文相对应,肯定是反序的时候最慢。

分析

最好情况是一次搞定,时间复杂度是O(N);

最坏的情况就是反序,时间复杂度是O(N^2);

平均情况,时间复杂度是O(N^2);

代码实现

代码实现原理图

我们先做一个交换函数

void Swap(int* p1, int* p2)
{int tmp = *p1;*p1 = *p2;*p2 = tmp;
}

实现代码:

我们先来一种常规的方法:

//冒泡函数
void Bubblesort(int* a, int n)
{for (int i = 0; i < n; i++){for (int j = 1; j < n - i; j++){if (a[j - 1] > a[j]){Swap(&a[j - 1], &a[j]);}}}
}

当然我们可以用”for“的方法实现,也可以用“while”的方法实现。

void Bubblesort(int* a, int n)
{   int end = n;while ((end > 0)){for (int i = 1; i < end; i++){if (a[i - 1] > a[i]){Swap(&a[i - 1], &a[i]);}}end--;}
}

有些小伙伴可能会对两次“for”才能实现,初学者就会产生疑惑,为什么会这样,那我们可以先写一趟冒泡排序:

void Bubblesort(int* a, int n)
}
//一趟for (int i = 0; i < n - 1 - j; i++){if (a[i] > a[i + 1]){Swap(&a[i], &a[i + 1]);}}
}

然后我们再来写整个冒泡排序

void Bubblesort(int* a, int n)
}
//一趟for(int j = 0; j < n; j++){for (int i = 0; i < n - 1 - j; i++){if (a[i] > a[i + 1]){Swap(&a[i], &a[i + 1]);}}}
}

看到这里我们有些小伙伴可能对总数是“n”还是“n-1”有些疑问。

其实这里,我们如果用仔细看可以发现,前者是以“j == 1”开始,后者是以“0”开始,所以造成了不同。

我们接着改一下,提升一下效率。我们想一下,假如我们在交换以后,接下来的数组已经是有序的了,那么我们就没必要交换了。

void Bubblesort(int* a, int n)
{for (int j = 0; j < n - 1; j++){int exchange = 0;for (int i = 0; i < n - 1 - j; i++){if (a[i] > a[i + 1]){Swap(&a[i], &a[i + 1]);exchange = 1;}}if (exchange == 0){break;}}
}

这样我们就完成了

总结

我们用C语言多种方式实现了冒泡排序,冒泡排序实现本身不难,大家多多体会,尝试自己实现代码才能够真正的掌握,这些参考代码希望能够给大家带来帮助。

欢迎大家点赞和收藏。

http://www.yidumall.com/news/28248.html

相关文章:

  • 做面料哪个网站好关键词整站优化公司
  • 南昌互联网网站开发百度热门关键词
  • 一级域名做网站的好处陕西网络推广公司
  • 在制作网站前 不需要急于做的工作是百度竞价官网
  • 政府网站模板asp合肥网络推广公司
  • 网站主页图片设计建站之星网站
  • 购物网站的推广推广app赚佣金平台
  • 四川省建设人才网官网安卓手机优化软件排名
  • php网站后台开发教程市场调研方法有哪些
  • wordpress免费插件下载地址网站关键词排名手机优化软件
  • 个人可以做网站么推广软件app
  • asp.net做网站原理市场推广怎么做
  • 工业和信息化部网站备案系统百度推广开户代理
  • 医疗网站是否全部需要前置备案百度图像搜索
  • wordpress注册后发邮件免费下载优化大师
  • 网站建设需要学习哪些今日最新新闻重大事件
  • 天元建设集团有限公司基本情况seo优化排名教程百度技术
  • 天津网站建设q479185700惠优化网站内容
  • 三门网站建设站长工具最近查询
  • 多个域名URL转发到一个网站友情链接查询工具
  • 贵州小城镇建设网站广告投放平台系统
  • 中山专业网站制作手机系统流畅神器
  • 广告公司网站源码而的跟地seo排名点击软件
  • 可信网站多少钱个人在线做网站免费
  • 公司做网站怎么构思指数型基金是什么意思
  • 网站建设注册百度招聘官网
  • 网站首页效果图广州网站快速优化排名
  • 2023年8月上海疫情爆发宁波seo推广优化哪家强
  • 网站推广一般在哪个网做做网页的网站
  • wordpress主题 四亩田网络优化器下载