//冒泡排序:
//优化版口诀:序而不排 -> 优化原理:证实已经有序,不需要再次循环 -> 代码角度实现优化:内重循环已证实有序,外重循环不需要再次循环可以停止了。建立flag标记告诉外层循环有序这件事。

//何时为有序?就是内存循环在从0到尾往前比较时,没出现过一次交换的动作,则证明从此次大趟开始,剩下的所有数据已经有序。

#include <stdio.h>
void mySwap(int *pa ,int *pb)
{*pa ^= *pb;*pb ^= *pa;*pa ^= *pb;
}
//基础版
void popSort(int *p,int n)//升序
{int i,j;for(i = 0;i<n-1;i++)//i控制的是比较多少大趟
    {for(j = 0;j<n-1-i;j++)//j控制的是比较位置
        {if(p[j]>p[j+1]){mySwap(&p[j],&p[j+1]);}}}}//优化版
void popSort2(int *p,int n)//升序
{int i,j;int flag;for(i = 0;i<n-1;i++){flag = 1;for(j = 0;j<n-1-i;j++){if(p[j]>p[j+1]){mySwap(&p[j],&p[j+1]);flag = 0;}}if(flag)break;}}int main(void)
{int arr[10] = {1,3,5,7,9,2,4,6,8,0};popSort2(arr,10);int i;for(i = 0;i<10;i++)printf("%d\n",arr[i]);return 0;
}

转载于:https://www.cnblogs.com/ZhuLuoJiGongYuan/p/9519014.html

47. 对数组进行冒泡排序,实现冒泡排序的基础版与优化版相关推荐

  1. c++ 三维数组 初始化_013 JAVA 多维数组及数组的拷贝、冒泡排序、二分法查找...

    1.多维数组 多维数组的元素又是数组,可以有二维.三维.甚至更多维数组 1.1二维数组的声明: 数据类型 [][] = new 数据类型[一维长度][二维长度] public class Test01 ...

  2. 一维数组的排序方法----冒泡排序

    new []  arr = {4,3,2,1} // new一个新的数组 分析:1.像金鱼吐泡泡一样,水底→水面,泡泡也是小→大的.冒泡排序法:每次都从第一个元素开始比较,相邻两个元素排序,如果前&g ...

  3. java顺序表冒泡排序_冒泡排序就这么简单 - Java3y的个人空间 - OSCHINA - 中文开源技术交流社区...

    冒泡排序就这么简单 在我大一的时候自学c语言和数据结构,我当时就接触到了冒泡排序(当时使用的是C语言编写的).现在大三了,想要在暑假找到一份实习的工作,又要回顾一下数据结构与算法的知识点了. 排序对我 ...

  4. 计算机软件技术冒泡排序,北航计算机软件技术基础实验报告计软实验报告3——冒泡排序和快速排序...

    北航计算机软件技术基础实验报告计软实验报告3--冒泡排序和快速排序 (8页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 实验报告实验名称 ...

  5. 带哨兵的冒泡排序_冒泡排序与快速排序

    一.冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法.它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小.首字母从A到Z)错误就把他们 ...

  6. 冒泡排序、冒泡排序原理、方法

    冒泡排序 1.什么是冒泡排序? 冒泡排序是一种简单的排序算法,通过交换排序实现效果,使用与小规模的数据排序. 原理: 把一个乱序的数组,以某种规则(从大到小.从小到大)进行排序,通过比较相邻的元素,两 ...

  7. 冒泡排序、冒泡排序动画、冒泡排序代码、冒泡排序教程

    冒泡排序.冒泡排序动画.冒泡排序代码.冒泡排序教程 点击下载代码 推箱子代码 碰撞检测穿马路.小人过马路 魔幻粒子.火焰动画 开心消消乐 16宫格的翻牌消除游戏 我的世界小人行走代码 超级玛丽 赣极方 ...

  8. 有十五个数按由大到小顺序存放在一个数组中_数据结构基础 (代码效率优化, 线性表, 栈, 队列, 数组,字符串,树和二叉树,哈希表)...

    作者:张人大 代码效率优化 复杂度 -- 一个关于输入数据量n的函数 时间复杂度 -- 昂贵 与代码的结构设计有着紧密关系 一个顺序结构的代码,时间复杂度是O(1), 即任务与算例个数 n 无关 空间 ...

  9. 【47】SSD硬盘(下):如何完成性能优化的KPI?

    [计算机组成原理]学习笔记--总目录 [47]SSD硬盘(下):如何完成性能优化的KPI? 引言 一.磨损均衡.TRIM 和写入放大效应 1.FTL(Flash-Translation Layer,闪 ...

最新文章

  1. apple id无法创建_我们如何使用Apple的学习框架来创建我们的第一个应用程序
  2. 复合索引在什么情况下使用
  3. java异步多线程 判断线程状态_java多线程和异步回调
  4. 工作159:根据id传向把对象里面的整个数据传向下个接口
  5. Java中BigDecimal的8种舍入模式
  6. JavaEE——Mybatis(5)--resultMap自定义结果集封装
  7. oracle分析函数-排名函数
  8. github仓库主页介绍
  9. 应用comsol模拟水力压裂应力分布
  10. 【Axure】动态图表设计-柱状图、折线图、饼图(免费下载)
  11. iphone xr xs_如何关闭iPhone X,XS和XR
  12. Camera 主观画质测试(参考)
  13. ExtremeNet:Bottom-up Object Detection by Grouping Extreme and Center Points
  14. 二叉树遍历方式-先序、中序、后序和层序遍历(JAVA)
  15. win10 / linux计划任务
  16. 维基解密想帮助苹果、Google 对抗 CIA 黑客入侵
  17. 11 02 11 无用功
  18. 04-再探JavaScript
  19. 并不是越好的院校,考研专业课越难。
  20. linux磁盘文件检查修复工具下载,磁盘修复工具(TestDisk)

热门文章

  1. VMware 克隆网卡无法启动
  2. source insight 里编辑的时候,每次粘贴后,光标停留在粘贴内容的左面
  3. 方法 - 查询到本周的日期
  4. poj 3204 Ikki's Story I - Road Reconstruction
  5. Windows中安装Apache2和PHP4权威指南
  6. 一起学DNS系列(一)基础、概览
  7. python做ui自动化_[python]RobotFramework自定义库实现UI自动化
  8. Debug 和 Release 编译方式
  9. zynq学习01 zynq 单独使用PL模块点亮led
  10. android切换字体颜色,Android开发实现按钮点击切换背景并修改文字颜色的方法