什么是冒泡排序:

冒泡排序就是将一组数据进行排序,首先是从相邻的两个元素比较,大的值放在后面,依次往后操作找出最大值,并放在最后一位。

这里我们举例

arr[10] = { 9,5,4,3,2,1,0,6,7,,8 };

如第一个元素9依次比较会跑到最后一个位子

在从头开始第二大的元素将跑到倒数第二个位置

让后反复循环,进行排序。


简单的冒泡排序:

#include<stdio.h>
int main()
{int  arr[10] = { 9,5,4,3,2,1,0,6,7,8 };int  cz = sizeof(arr) / sizeof(arr[0]);int  tmp = 0;int i = 0, j = 0;for ( i = 0;  i < cz-1 ; i++)//大的比较{for ( j = 0; j < cz - i - 1 ; j++)//小的比较{if (arr[j] > arr[j + 1]){tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;}}}for (int i = 0; i < cz; i++)printf("%d ", arr[i]);return 0;
}

冒泡排序改进1:

我们发现如果在某一次小的比较后,已经完全成为有序数组,我们就不必再进行下一次大的比较,直接退出循环即可。

#include<stdio.h>
int main()
{int  arr[10] = { 9,5,4,3,2,1,0,6,7,8 };int  cz = sizeof(arr) / sizeof(arr[0]);int  tmp = 0;int i = 0, j = 0;int m = 1;for ( i = 0;  i < cz-1 ; i++)//大的比较{m = 1;for ( j = 0; j < cz - i - 1 ; j++)//小的比较{if (arr[j] > arr[j + 1]){tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;m = 0;}}if (m){break;}}for (int i = 0; i < cz; i++)printf("%d ", arr[i]);return 0;
}

改进2:

我们发现在进行第一次大的比较后,

arr[10] = { 5,4,3,2,1,0,6,7,8,9 };

数组的后半部分已经有序,我们可以跳过他们。

逃过方法:记录最后改变位置的坐标,并让j<这个坐标即可

#define  _CRT_SECURE_NO_WARNINGS 1
//改为升序
#include<stdio.h>
int main()
{int  arr[10] = { 9,5,4,3,2,0,1,6,7,8 };int  cz = sizeof(arr) / sizeof(arr[0]);int  tmp = 0;int i = 0, j = 0;int m = 1;int last_change = cz;for ( i = 0;  i < cz-1 ; i++)//大的比较{m = 1;for ( j = 0; (j < cz - i - 1) && ( j < last_change) ; j++)//小的比较{if (arr[j] > arr[j + 1]){tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;  m =0;     }} last_change = j + 1;if (m){break;}}for (int i = 0; i < cz; i++)printf("%d ", arr[i]);return 0;
}

C语言冒泡排序(升序)相关推荐

  1. 冒泡排序c java c,冒泡排序,c语言冒泡排序法代码

    冒泡排序,c语言冒泡排序法代码 冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小.首字 ...

  2. c语言冒泡排序(解析)

    c语言冒泡排序(解析) 运行结果:

  3. C语言——冒泡排序法

    C语言--冒泡排序法 问题描述: 1, 3, 2, 6, 4, 5, 9, 8, 10, 7进行从小到大排序 代码: # include <stdio.h>int main() {int ...

  4. C语言冒泡排序(起泡法)

    C语言冒泡排序(起泡法) 冒泡法排序是C语言中较简单的 排序算法 的 . 定义:它重复地走访过要排序的元素列,依次比较两个相邻的元素,让较大的元素逐渐往后移动(交换两个元素的值),直到数组的末尾.如此 ...

  5. c语言冒泡排序法代码(c语言冒泡排序法代码讲解)

    求一个C语言冒泡排序法的简单程序怎么办? 下一趟排序开始时,R[1..lastExchange-1]是有序区,R[lastExchange..n]是无序区.这样,一趟排序可能使当前有序区扩充多个记录, ...

  6. C语言 | 数组升序排列(冒泡排序法)

    数组升序排列 #include<stdio.h> int main() {int a[1000];int i,j,n,t,k=0;scanf("%d",&n); ...

  7. 10个数冒泡排序流程图_C语言 | 冒泡排序

    "要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人-万中无一" --包租婆这道理放在C语言学习上也一并受用.在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语 ...

  8. go语言 冒泡排序原理

    一.概述 go语言中的冒泡排序和java中的冒泡排序的原理一样,如果你懂得java的冒泡排序,那么go只是换了一种写法而已.冒泡,简而言之,就是相邻的两个数据进行比较,进行移位,向冒泡一样.例如一个集 ...

  9. c语言冒泡排序法程序填空_【C语言】两种方式实现冒泡排序算法

    题目要求 编写一个C语言程序,实现基本的冒泡排序算法. 算法 冒泡排序,用一句话来总结: 一组数中,相邻的两个数进行比较.交换,将最大(小)数交换至尾(首)部,即完成了一次冒泡排序 要想对N个数字进行 ...

  10. c语言数据交换的算法流程图,C语言冒泡排序算法浅析

    C语言泡排冒序算浅析 法中刘旭 ( 江师范丽等专高学科校数与计算机学科学系 ) [ 摘]要泡冒排序算法 C语言常见是排序算法之,一该算法的优点 逻辑是清晰,代码简洁,点缺是时复杂度间高较本文介.绍了统 ...

最新文章

  1. csr_matrix矩阵用法小结
  2. Mac-使用技巧之快速新建txt文本
  3. 【数字信号处理】傅里叶变换性质 ( 傅里叶变换时移性质示例 )
  4. HDU1011 Starship Troopers(树形dp)
  5. 为什么8位数据范围是-128到127,而不是-127到128?
  6. python 抢购口罩_Python 京东口罩监控+抢购
  7. DIV或者DIV里面的图片水平与垂直居中的方法 - 站住,别跑 - 博客园
  8. php处理ajax post请求超时,php – 如何处理AJAX请求中的会话超时
  9. IS-IS详解(五)——IS-IS 三次握手与两次握手
  10. 短视频仿抖音源码--探索短视频+时代
  11. Python基础+数据科学入门(四)程序控制结构
  12. three.js顶点篇
  13. 春节流量争夺战:互联网巨头跪求你收红包
  14. SDL开发笔记(三):使用SDL渲染窗口颜色和图片
  15. 送福利 手把手教你快速配置腾讯云 Linux 服务器
  16. 计算机应用用蒙语怎么写,100句常用蒙古语 - 百度文库
  17. 实战QT数据采集与显示
  18. 国内8大热门android论坛
  19. 【前端多宫格卡片自适应,再也不怕多宫格布局啦】
  20. 初入红尘——在安联IT实习的一点感受(未完......)

热门文章

  1. 基于DWM1000模块开发UWB系统进行室内定位
  2. rdkit 计算环、芳香环数
  3. spleetergui2.9汉化版下载 | SpleeterGui(音轨分离软件)官方中文版V2.9.1 | 人声分离软件下载
  4. 《关于动态社交网络建模和分析的教程》的读书笔记
  5. Android Studio 统计代码行数插件 — Statistic 申请软著写源程序量
  6. 没有GPS模块无人机无法解锁解决方法测试及其他无法解锁APM疑难杂症
  7. 【观察】 全新紫光云:“云数智”底盘再升级,背后的三重新价值
  8. SPPnet论文总结
  9. XP仿Windows7主题包 不占内存的。
  10. 石光荣,黑客帝国,社会化网络----社会化网络能否平衡抽象主导的现代生活? (发表于程序员第一期)