小甲鱼 排序算法 冒泡排序

冒泡排序

基本思想:两两相邻记录的关键字,如果反序则交换,直到没有反序的记录为止

(PS  反序:大在前,小在后)

下面的代码不是真正意义的冒泡排序(因为比较的不是相邻)

//BubbleSort冒泡排序

#include void BubbleSort(int k[], int n)

{

int i, j, temp;

//为什么n-1,因为排序到最后一个,最后一个已经是最大的,不需要再排序

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

{

//j=i+1:下一个元素

for (j = i+1; j < n; j++)

{

//从小到大排序

if (k[i] > k[j])

{

temp = k[j];

k[j] = k[i];

k[i] = temp;

}

}

}

}

int main(void)

{

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

BubbleSort(a, 10);

printf("排序后的结果是:");

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

{

printf("%d", a[i]);

}

printf("\n\n");

return 0;

}

冒泡排序的要点

1、两两注意是相邻的两个元素的意思。

2、如果有n个元素需要比较n-1次,每一轮减少1次比较。

3、既然叫冒泡排序,那就是从下往上两两比较,所以看上去就跟泡泡往上冒一样。

真正意义的冒泡算法

数组从最后面进行比较,每一次排序确定最小的排在前面

//BubbleSort冒泡排序

#include void BubbleSort(int k[], int n)

{

int i, j, temp, count1=0, count2=0;

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

{

//为什么是n-1?

//每一次循环后确定的元素不在参与比较

//第一次确定第一大,第二次确定第二大

for (j = n-1; j > i; j--)

{

count1++;

//从小到大排序

if (k[j-1] > k[j])

{

count2++;

temp = k[j-1];

k[j-1] = k[j];

k[j] = temp;

}

}

}

printf("总共进行了%d次比较,进行了%d次移动!\n", count1, count2);

}

int main(void)

{

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

BubbleSort(a, 10);

printf("排序后的结果是:");

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

{

printf("%d", a[i]);

}

printf("\n\n");

return 0;

}

优化冒泡排序算法

//BubbleSort冒泡排序

#include void BubbleSort(int k[], int n)

{

int i, j, temp, count1=0, count2=0, flag;

flag = 1;

for (i = 0; i < n-1 && flag; i++)

{

//为什么是n-1?

//每一次循环后确定的元素不在参与比较

//第一次确定第一大,第二次确定第二大

for (j = n-1; j > i; j--)

{

count1++;

flag = 0;//没有执行移动

//从小到大排序

if (k[j-1] > k[j])

{

count2++;

temp = k[j-1];

k[j-1] = k[j];

k[j] = temp;

flag = 1;

}

}

}

printf("总共进行了%d次比较,进行了%d次移动!\n", count1, count2);

}

int main(void)

{

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

BubbleSort(a, 10);

printf("排序后的结果是:");

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

{

printf("%d", a[i]);

}

printf("\n\n");

return 0;

}

小甲鱼c语言入门冒泡,小甲鱼 排序算法 冒泡排序相关推荐

  1. 微信小程序开发语言(微信小程序开发教程)详细步骤

    微信小程序开发语言 开发微信小程序用什么语言 1.微信小程序开发所需要的语言比较特别,首先介绍一下需要使用到的文件类型大致分为:WXML(WeiXin Mark Language 微信标记语言).WX ...

  2. C语言中的几种排序算法

    C语言中的几种排序算法 在编程练习时,我们经常会遇到一些将一串乱序的数字排列成有序的数列(递增,递减)的问题,以此起到解决问题的效果.目前我使用的比较熟练的有三种排序算法,冒泡排序法,快速排序法,另外 ...

  3. 我们一起来排序——使用Java语言优雅地实现常用排序算法

    破阵子·春景 燕子来时新社,梨花落后清明. 池上碧苔三四点,叶底黄鹂一两声.日长飞絮轻. 巧笑同桌伙伴,上学径里逢迎. 疑怪昨宵春梦好,元是今朝Offer拿.笑从双脸生. 排序算法--最基础的算法,互 ...

  4. C语言基础排序算法-冒泡排序

    C语言基础排序算法-冒泡排序 什么是冒泡排序? 顾名思义,这种排序方法就像水中的气泡一样,从底逐渐往上冒,一次前进一步.我们来看一个例子,看看到底是怎么冒泡的.假设有一个数组3,2,5,4,1,我们希 ...

  5. C/C++语言入门——冒泡排序问题

    用C/C++语言实现冒泡排序 以下就解决此问题分为三步 1.识思想 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的元素列,依次比较两个相邻的元素, ...

  6. c语言程序设计单元小测,C语言程序设计单元小测2.doc

    C语言程序设计单元小测2 C语言程序设计单元小测2 考试形式 闭 卷 答题时间 60 分钟 考试性质 单元测试 一.选择题:(本大题共8小题,每小题5分,共40分) 1.能正确表示逻辑关系:" ...

  7. mpvue微信小程序动画_入门微信小程序

    为何现在的微信小程序还是高温不退?主要原因如下:无需安装.不占内存.易传播. 废话不多说,开始进入开发! -----------小程序环境搭建----------------------------- ...

  8. 微信小程序零基础入门【小程序的下载、安装与首项目配置】

    目录 第一步.注册小程序开发账号 第二步.下载并安装微信小程序 第三步.首次创建小程序 第一步.注册小程序开发账号 (1)点击注册按钮 微信公众平台 点击该链接进入微信公众号平台,点击右上角注册按钮, ...

  9. C语言——十四种内部排序算法【直接插入排序-冒泡排序-选择排序-插入排序-希尔排序-归并排序-快速排序-堆排序-折半插入排序-二分查找-路插入排序-表插入排序-简单选择排序-直接选择排序-树形选择】

    目录: 一:插入排序 A:直接插入排序 1.定义: 2.算法演示 实例1: 3.基本思想 4.排序流程图 实例1: B:希尔排序 1.定义: 2.算法演示 实例2: C:其他插入排序 a:折半插入排序 ...

  10. c语言选择排序步骤,C语言中如何实现选择排序算法

    选择排序法实现的步骤:首先找出一个最小数交换到最前面:然后在剩下的数中找个最小的交换到剩下数最前面:最后一直重复此步骤,直到所有数排好即可. 选择排序法实现的步骤:找出一个最小数交换到最前面,然后在剩 ...

最新文章

  1. edge chrome 浏览器 底色调黑 反色
  2. 一个简单自激振荡器电路分析
  3. 一文彻底搞懂快速幂(原理、实现、矩阵快速幂)
  4. Angular的built-in指令
  5. 【CSS3】CSS3文本相关属性大全
  6. sqlserver查询语法
  7. docker -v 文件夹下没有数据_微服务就是Dubbo?并没有那么简单!微服务架构+Docker+k8s了解下...
  8. linux内核编译串口驱动,ARM Linux下安装CH341串口驱动
  9. 腾讯手机管家(android2.3),腾讯手机管家3.4 Android发布_软件资讯软件快报-中关村在线...
  10. win10开机小键盘灯不亮
  11. Android Studio设置http proxy加速下载(亲测有效)
  12. CSS-Learning | 使用border-radius创建圆形和胶囊形状(长圆形)
  13. 基于滴滴云安装 Docker 并上传镜像到滴滴云 Docker 仓库
  14. 电脑右下角没有USB图标,不能退出
  15. 从endnote导出参考文献发现没有参考文献信息
  16. E03.02 Saudi Crown Prince Is Held Responsible for Khashoggi Killing in U.S. Report
  17. 20个时尚相机转场PR预设
  18. php eteams,应用安全 - 软件漏洞 - 泛微OA漏洞汇总
  19. 搜狗词库的批量下载#Python
  20. 停车场管理_充电桩_停车收费_物业管理_源码

热门文章

  1. 把svg图标制作成字体图标_SVG图标FTW
  2. 服务器wifi模块通讯协议,WiFi模块 TCP/IP协议栈
  3. 三菱Q系列常用注意事项
  4. 傅里叶热传导定律【Fourier's Law of Heat Conduction】
  5. 4.2 无线传感器网络传输层协议
  6. 网络社区划分的算法分类(2)
  7. 前后端分离的跨域请求问题解决
  8. 小程序内嵌的H5页面如何跳转到其他小程序?
  9. 微信 华为盒子 搜索不到服务器,【沙发管家教你一招】用手机微信控制华为荣耀盒子!...
  10. oracle字体库 生僻字,繁难字库生僻字大全-找字网_免费字体下载、字体在线商用授权、ttf字体分享、专业字体网站!...