冒泡排序算法的运作如下:

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

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

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

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

时间复杂度

若文件的初始状态是正序的,一趟扫描即可完成排序。所需的关键字比较次数

和记录移动次数

均达到最小值:

所以,冒泡排序最好的时间复杂度为

若初始文件是反序的,需要进行

趟排序。每趟排序要进行

次关键字的比较(1≤i≤n-1),且每次比较都必须移动记录三次来达到交换记录位置。在这种情况下,比较和移动次数均达到最大值:

冒泡排序的最坏时间复杂度为

综上,因此冒泡排序总的平均时间复杂度为

2. Use pointer to complete the assignment. define array for three integers.

Write three functions, which are input(), deal(), print()

The input() function needs to complete three number's input.

The deal() function needs to put the smallest onto the first position, put the biggest one onto the end of the sequence.

The print() function needs to print the result.

#include

int input(int* a);

int output(int* a);

int deal(int *);

int main()

{

int array[3];

input(array);

deal(array);

output(array);

return 0;

}

int input(int* a)

{

int i;

for(i=0;i<3;i++)

{

scanf("%d",&*(a+i));

}

return 0;

}

int deal(int *a)

{

int min,i,j;

for(i=0;i<3-1;i++)

for(j=0;j<2-i;j++)

if(*(a+j)>*(a+j+1))

{

min=*(a+j);

*(a+j)=*(a+j+1);

*(a+j+1)=min;

}

return 0;

}

int output(int* a)

{

int i;

for(i=0;i<3;i++)

printf("%d ",*(a+i));

return 0;

}

go语言学习--指针数组和数组指针

数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长.也就是说执行p+1时,p要跨过n个整型数据的 ...

c语言&period;函数指针数组

函数指针: 一个指向函数的指针.一般用函数名表示. 函数指针数组:元素为函数指针的数组.转移表.c语言中函数不可以定义为数组,只能通过定义函数指针来操作. #include

C语言-&gt&semi;实验室-&gt&semi;指针数组

一 分析 讨论指针数组要从三个层面来考虑: 1)指针数组本身是什么 2)指针数组作为参数时的表现 3)指针数组作为返回值时的表现 二 指针数组是什么 1)指针数组--指针的集合 数组是若干元素的集合, ...

C语言中指针数组和数组指针的区别

指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定.它是“储存指针的数组”的简称. 数组指针:首先它是一个指针,它指向一个数组.在32 位系统下永远是占4 个字节,至于它指 ...

【C语言】指针数组

题目:编写UNIX程序sort的简化版本,该程序按字母顺序对由文本行组成的集合进行排序. 思路:我们引入指针数组处理这种问题.如果待排序的文本行首尾相连地存储在一个长字符数组中,那么每个文本行可通过指 ...

C&sol;C&plus;&plus;语言中指针数组和数组指针比较区别

指针数组:int *p[3] 定义一个指针数组,其中每个数组元素指向一个int型变量的地址 意思就是指针的数组,数组里面都是指针 例子: int *p[3];//定义了一个指针数组,有3个成员,每个成 ...

c语言 字符指针数组的用法

#include #include int main(){ //字符数组的使用 char str[] = {'z','b','c',' ...

C语言核心之数组和指针详解

指针 相信大家对下面的代码不陌生: int i=2; int *p; p=&i;这是最简单的指针应用,也是最基本的用法.再来熟悉一下什么是指针:首先指针是一个变量,它保存的并不是平常的数据,而 ...

C语言学习004&colon;数组与指针

在C语言中,字符串实际上就是字符数组,在内存中字符串"Shatner"存储的形式是这样的

C&num;委托与C语言函数指针及函数指针数组

C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用 ...

随机推荐

EF INNER JOIN&comma;LEFT JOIN&comma;GROUP JOIN

IQueryable的扩展方法中提供了 INNER JOIN,GROUP JOIN但是没有提供LEFT JOIN GROUP JOIN适用于一对多的场景,如果关联的GROU ...

Spring MVC过滤器-字符集过滤器(CharacterEncodingFilter)

spring的字符集过滤通过用于处理项目中的乱码问题,该过滤器位于org.springframework.web.filter包中,指向类CharacterEncodingFilter,Charact ...

Iterator的remove方法可保证从源集合中安全地删除对象(转)

如果对正在被迭代的集合进行结构上的改变(即对该集合使用add.remove或clear方法),那么迭代器就不再合法(并且在其后使用该迭代器将会有ConcurrentModificationExcept ...

java&period;lang&period;NoSuchFieldError&colon; VERSION&lowbar;2&lowbar;3&lowbar;0 报错解决方案

java.lang.NoSuchFieldError: VERSION_2_3_0 at org.apache.struts2.views.freemarker.FreemarkerManager.c ...

shell判断条件是否存在

1. shell判断文件,目录是否存在或者具有权限 2. #!/bin/sh 3. 4. myPath="/var/log/httpd/" 5. myFile="/var ...

Android 滑动界面实现---Scroller类别 从源代码和开发文档了解(让你的移动布局)

在android学习,行动互动是软件的重要组成部分,其中Scroller是提供了拖动效果的类,在网上.比方说一些Launcher实现滑屏都能够通过这个类去实现.. 样例相关博文:Android 仿 窗 ...

CI Weekly &num;12 &vert; 微信小程序的自动化测试进阶

岁末将至,站在年终冲刺的尾巴上,flow.ci 新增了个人和团队设置的功能: 上线团队功能,注册时默认创建一个与用户名一致的团队,可设置:团队名称.增减团队成员,后续会不断完善: 增加个人设置,可修改 ...

Go 语言条件语句

条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为 false 的情况在执行另外的语句. 下图展示了程序语言中条件语句的结构: Go 语言提供 ...

Netty源码分析(五):EventLoop

上一篇主要介绍了一下EventLoopGroup,本篇详细看下它的成员EventLoop. 类结构 NioEventLoop继承自SingleThreadEventLoop,而SingleThread ...

c语言冒泡排序数组指针,c语言冒泡排序,指针,数组相关推荐

  1. C++_const修饰指针_指针和数组_指针和函数_指针配合数组和函数案例_用指针数组实现冒泡排序---C++语言工作笔记024

    然后我们再来看一下const修饰指针 这里第一种是常量指针 可以看到 const int * p =&a 这个p就是一个常量指针,可以看到,常量指针,指明了,这个指针指向的值是一个常量不能修改 ...

  2. 【C语言数组】一、二维数组冒泡排序

    目录 1. 一维数组的创建和初始化 1.1 一维数组的创建 1.2 数组的初始化 1.3 一维数组的使用 1.4 一维数组在内存中的存储 2. 二维数组的创建和初始化 2.1 二维数组的创建 2.2 ...

  3. (篇三)C语言的冒泡排序多解、选择排序、数组合并、矩阵相加

    文章目录 一.经典冒泡排序与选择排序 二.矩阵相加 三.数组合并 四.卖西瓜问题 C语言是非常锻炼结构化思维的语言,而结构化思维的编程思维非常重要的一点,让我们通过练习C语言实例增强我们的编程思维吧 ...

  4. C语言排序(桶排序,冒泡排序,选择排序,插入排序,快速排序)

    参考:C语言五大排序(桶排序,冒泡排序,选择排序,插入排序,快速排序)动态演示 作者:一只青木呀 发布时间: 2020-09-09 20:18:43 网址:https://blog.csdn.net/ ...

  5. c语言循环结构排序,C语言循环结构 -C语言冒泡排序算法(附带源码)

    排序(sorting)就是调整列表的顺序,是计算机编程中经常要做的一件事情.经过排序以后的数据,可以极大地提高查找的效率. 冒泡排序(bubble sort)是用嵌套的 for 循环来实现的,其名称来 ...

  6. C语言经典练习题(2)——“冒泡排序(Bubble Sort)“

    C语言趣味练习题--冒泡排序 文章目录 C语言趣味练习题--冒泡排序 一.冒泡排序介绍 二.图文解释原理 三.代码实现 1.代码示例 2. 代码解析 总结 一.冒泡排序介绍 冒泡排序(Bubble S ...

  7. c语言程序设计冒泡排序在哪,C语言程序设计冒泡排序教学案例杨进

    <C语言程序设计冒泡排序教学案例杨进>由会员分享,可在线阅读,更多相关<C语言程序设计冒泡排序教学案例杨进(5页珍藏版)>请在人人文库网上搜索. 1.C语言程序设计冒泡排序教学 ...

  8. 计算机c语言程序案例,计算机c语言程序设计冒泡排序教学案例 杨进.doc

    PAGE PAGE 3 C语言程序设计冒泡排序教学案例 永川职业教育中心 杨进 [案例背景] 排序是计算机学科中一项复杂而重要的技术,在各种软件中使用频率都很高,因此专家们研究了各种排序算法.在中职类 ...

  9. linux c语言 malloc动态分配指针,C语言malloc函数为一维,二维,三维数组分配空间...

    c语言允许建立内存动态分配区域,以存放一些临时用的数据,这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要时随时释放,这些数据存储在堆区.可以根据需要,向系统申请 ...

最新文章

  1. Unity3D学习笔记(二) 一些常用的空间函数
  2. java.util.concurrent.Exchanger应用范例与原理浅析--转载
  3. 从(0,0)到(n,n)——广度优先及其改进
  4. DCMTK:类DcmVR:值表示
  5. proe50安装方法64位_3ds max 2021 安装教程【64位】
  6. struts.preperties说明
  7. Pipe——高性能IO(二)
  8. mysql 断言,mysql触发器模拟断言
  9. 安装protobuf
  10. 计算机科学导论课后总结
  11. 你可知道利用独立博客进行淘宝客推广方法
  12. elasticsearch实践之代码结构设计
  13. Mac下启动nacos
  14. Glide加载网络图片出现模糊问题
  15. 升级宽带到500M光纤
  16. CSS3过渡:在2个不同的渐变色之间进行动画处理
  17. 自学Python第十四天- 一些有用的模块:urllib、requests 网络编程基础,向爬虫靠拢
  18. linux 进文字界面,CentOS安装后进入时文字界面,不知如何用命令,求解
  19. Oracle批量插入UUID数据
  20. linux64位离线安装wine,如何在Ubuntu Linux 64位上安装Wine

热门文章

  1. 写出求一元二次方程根的流程图
  2. 【附源码】计算机毕业设计java疫情下公共场所卫生安全管理系统设计与实现
  3. IP服务-2-RARP和BOOTP
  4. 简单模拟ATM的取款过程
  5. 学习笔记(03):学校网管员培训视频教程-以太网的发展
  6. redis | 使用 redis 完成定时任务,这个场景你知道吗?
  7. 如何做到招聘要求中的「要有扎实的 Java 基础」
  8. maven 中央仓库 无法访问
  9. 账号登陆界面制作(Axure)
  10. oracle常见面试题