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

电子商务网站建设与管理试卷百度云域名没有备案怎么做网站

电子商务网站建设与管理试卷,百度云域名没有备案怎么做网站,申请一个电子邮箱,电商一共有什么平台引言 用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/827201.html

相关文章:

  • 想做网站的公司好网络推广方案微xiala11
  • 微商城网站建设代理商微能力者恶魔网站谁做的
  • 网站的不同类免费公司宣传视频制作软件
  • 舞台灯光网站建设线上销售水果营销方案
  • 广州网站建设模板网站集群建设价格
  • 招远建网站首选公司那个网站上可以找代加工的订单做
  • 企业网站建设应该注意什么事项问题电脑编程软件
  • 冠县做网站专业的上海网站建设
  • 惠州 网站建设app开发实训小结网站建设
  • 个旧做网站哪家公司好怎么查一个网站是什么程序做的
  • 如何欣赏网站网络推广活动方案主题和思路
  • 网站推广效果的评价指标用html做简单网站
  • 成都网站建设有哪些做网站 用什么语言
  • 湖南省工程建设信息官方网站网页设计与制作课程设计报告
  • 大型网站建设优化企业济南网络优化推广
  • 荆州公司做网站已备案域名买卖
  • 做外国购物网站需要交税吗wordpress 安装教程
  • 北京网站优化平台wordpress 重定向过多
  • 做网站需要多少钱 做房地产如何做网站推广
  • 有哪些网站免费做推广个人 能建购物网站么
  • 2015帝国cms网站广告设计与制作专业需要美术功底吗
  • 大连建设网水电费查询网址北京seo顾问推推蛙
  • 网站软文是什么做外贸哪个网站看外汇
  • win10建站wordpress门户网站介绍
  • 用wix做外贸网站便宜虚拟主机做网站备份
  • 阳谷建网站网站做语言切换
  • 自己怎样免费建设网站网站图标怎么设置
  • 网站做双拼域名什么意思wordpress动漫电影主题
  • 什么网站做设计可以赚钱吗俄语企业网站制作
  • 网站推广的软件定制网站对公司有什么好处