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

响应式网站一般做几个尺寸在线生成个人网站

响应式网站一般做几个尺寸,在线生成个人网站,天津疫情风险区划分最新,公司网站做的一样算不算侵权6引言 用c语言实现使用冒泡排序 一、什么是冒泡排序 冒泡排序是一种简单的排序算法 基本原理 冒泡排序的基本思想是通过对数组中相邻元素的比较和交换,将最大(或最小)的元素逐步 “冒泡” 到数组的末尾(或开头)。它重…

引言

        用c语言实现使用冒泡排序

一、什么是冒泡排序

        冒泡排序是一种简单的排序算法

基本原理

  • 冒泡排序的基本思想是通过对数组中相邻元素的比较和交换,将最大(或最小)的元素逐步 “冒泡” 到数组的末尾(或开头)。
  • 它重复地走访要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

单看这个原理可能不是很明白,那么看一下这个图,你就明白了:

(这是个升序排列的图) 

二、用C语言实现冒泡排序 

        算法步骤

  • 比较相邻的元素。如果第一个比第二个大(升序排序),就交换它们两个。(核心)
  • 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。(核心)
  • 针对所有的元素重复以上的步骤,除了最后一个。
  • 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

代码示例

// 交换两个整数的函数
void swap(int* a, int* b) 
{int temp = *a;*a = *b;*b = temp;
}// 冒泡排序函数
void bubbleSort(int arr[], int n) 
{int i, j;for (i = 0; i < n - 1; i++) //从前往后遍历数组还是从后往前遍历数组是没有影响的 {// 每一轮比较后,最大的元素会“浮”到数组末尾for (j = 0; j < n - i - 1; j++) {// 如果当前元素大于下一个元素,则交换它们//法一:自己写一个交换的函数if (arr[j] > arr[j + 1]) {swap(&arr[j], &arr[j + 1]);//法二:搞个中间变量来完成交换if (arr[j] > arr[j + 1]){int tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;}}}}
}

        这里是用swap函数在实现交换的,因为是要交换数值大小,所以不能使用传值调用,要使用传址调用。

三、优化代码

     试想:如果要让这个冒泡排序对已经有序的数组或者部分有序的数组来排列的话,上面的代码还是会全部执行一遍,这是完美没有必要的,这时可以优化排序的代码;

        可以在每一轮开始的时候定义一个 int flag = 1,如果这一轮里交换了,就让flag = 0;

        如果这一轮里没有交换第一对元素,说明是有序的,就让flag不变; 在这一轮里第一次交换完后判断,flag 是不是等于 1。

        若等于 1 ,说明这一轮里后面是有序的,就break结束这一轮的循环,进入下一轮,接着排序。还是不懂的话,看着代码自己多想想。

        优化后的代码:

// 冒泡排序函数(优化后的)
void bubbleSort(int arr[], int n) 
{int i, j;for (i = 0; i < n - 1; i++) {// 每一轮比较后,最大的元素会“浮”到数组末尾int flag = 1;for (j = 0; j < n - i - 1; j++) {// 如果当前元素大于下一个元素,则交换它们if (arr[j] > arr[j + 1]) {flag = 0;swap(&arr[j], &arr[j + 1]);}if (flag == 1)//这⼀轮没交换就说明已经有序,后续⽆序排序了break;}}
}

  

四、算法分析

  • 时间复杂度:
  • 在最坏情况下,冒泡排序需要对数组进行 n−1 轮比较,每轮比较需要 n−i 次比较操作(i 表示当前轮数),所以时间复杂度为 O(n2)。
  • 在最好情况下,数组已经有序,只需要进行 n−1 次比较,时间复杂度为 O(n)。
  • 空间复杂度:冒泡排序只需要常数级的额外空间来进行元素的交换,所以空间复杂度为 O(1)。
  • 稳定性:冒泡排序是一种稳定的排序算法,即相等的元素在排序前后的相对位置不会改变。

冒泡排序虽然简单,但对于小规模数据或基本有序的数据集合,它仍然是一种有效的排序方法。在实际应用中,可以根据具体情况选择合适的排序算法。

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

相关文章:

  • 怎么注册网站免费的吗培训网站排名
  • 最适合seo的网站源码全球外贸采购网
  • 政务网站建设万能搜索引擎网站
  • 上海培训网站建设怎样进行关键词推广
  • 用返利网站做爆款阿拉营销网站
  • 为什么现在好多人嘲讽做核酸seo关键词排名优化销售
  • ip地址进入网站怎么做的百度热线
  • 株洲新闻网红网株洲站b站推广网站入口
  • 网站建设及推广惠州网络推广
  • 微信营销网站模板千锋教育培训多少钱
  • 如何让网站自适应手机百度爱采购平台登录
  • 真正免费手机网站建设h5制作
  • 做推广最好的网站是哪个?品牌营销做得好的品牌有哪些
  • 做机械设计图纸找什么网站宁波seo在线优化方案公司
  • wordpress 下载管理seo网站优化技术
  • 电子商务 网站建设如何做网站营销推广
  • 张家港市做网站的公司青岛爱城市网app官方网站
  • 自建网站模板关联词有哪些四年级
  • 网站制作 公开课如何做好推广工作
  • 合肥网站建设-中国互联网站推广优化服务
  • 天元建设集团有限公司公章图片优化百度seo
  • 网站谷歌地图提交佛山快速排名
  • 网站建设 招标怎么把网站排名优化
  • 北京建设网站的公司简介网站怎么开发
  • 网站建设与维护参考文献网站文章优化技巧
  • 开封旅游网站建设项目方案搜索引擎优化服务公司哪家好
  • 易语言怎么做网站自动登录注册百度推广账号
  • 华企网站建设推广优化北京seo优化方案
  • 宁乡电商网站建设收费优化网站排名解析推广
  • 网站收藏做系统以后丢了深圳网页设计