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

题目要求

编写一个C语言程序,实现基本的冒泡排序算法.

算法

冒泡排序,用一句话来总结:

一组数中,相邻的两个数进行比较、交换,将最大(小)数交换至尾(首)部,即完成了一次冒泡排序

要想对N个数字进行排序,循环N次即可.

如果真的不理解冒泡排序算法,请点击:冒泡排序_360百科

核心代码

//方式一:从头向尾遍历,将最大数(相对)沉入尾部(相对)

void BubbleSort1(int *arr,int sz){

int i = 0;

int j = 0;

assert(arr);

for(i=0;i

for(j=0;j

if(arr[j]>arr[j+1]){

int tmp = arr[j];

arr[j] = arr[j+1];

arr[j+1] = tmp;

}

}

}

}

//方式二:从尾向头遍历,将最大数(相对)冒泡到头部(相对)

void BubbleSort2(int *arr,int sz){

int i = 0;

int j = 0;

assert(arr);

for(i=0;i

for(j=sz;j>i;j--){

if(arr[j]>arr[j-1]){

int tmp = arr[j];

arr[j] = arr[j-1];

arr[j-1] = tmp;

}

}

}

}

完整代码

/*

*本代码版权归高小调博客所有

*作者:高小调

*日期:2016-9-9

*代码功能:通过C语言实现冒泡排序算法

*集成开发环境:Microsoft Visual Studio 2010

*/

#include

#include

#include

//从头向尾遍历

//相邻两数进行比较

//将最大数(相对)沉入尾部(相对)

void BubbleSort1(int *arr,int sz){

int i = 0;

int j = 0;

assert(arr);

for(i=0;i

for(j=0;j

if(arr[j]>arr[j+1]){

int tmp = arr[j];

arr[j] = arr[j+1];

arr[j+1] = tmp;

}

}

}

}

//从尾向头遍历

//相邻两数进行比较

//将最小数(相对)冒泡到头部(相对)

void BubbleSort2(int *arr,int sz){

int i = 0;

int j = 0;

assert(arr);

for(i=0;i

for(j=sz;j>i;j--){

if(arr[j]>arr[j-1]){

int tmp = arr[j];

arr[j] = arr[j-1];

arr[j-1] = tmp;

}

}

}

}

//测试函数

//为了方便起见,将参数设定为一个函数指针

void TestBubbleSort(void (*BubbleSort)(int *arr,int sz)){

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

int i = 0;

int sz = sizeof(arr)/sizeof(arr[0]);

BubbleSort(arr,sz);

for(i=0; i

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

}

printf("\n");

}

int main(){

TestBubbleSort(BubbleSort1);

TestBubbleSort(BubbleSort2);

system("pause");

return 0;

}

输出结果

以上只是冒泡排序算法的基本实现,还有很大的优化空间.至于优化的具体细节,详见下文.

(本文来源于互联网,若有侵权,请联系博主)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409727.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 开发板 播放音乐_MicroPython开发板:TPYBoard v102 播放音乐实例

0x00前言 前段时间看到TPYBoard的技术交流群(群号:157816561)里有人问关于TPYBoard播放音乐的问题。最近抽空看了一下文档介绍,着手做了个实验。 0x01实验器材 TPYBoard v102 开发板 1块 耳机或音响 1个 杜邦线 若干 0x02前期准备…

【转】选择适当的NFC标签类型

来自: Innovision 研究技术有限公司 目录 1. 简介 3 2. NFC的主要应用 4 3. NFC的规定标签类型 5 4. 选择适当的标签 6 5. 小结 11 6. 术语表 12 1. 简介 近场通信(NFC)适用于非常广泛的一系列应用。构建于现有系统和人类行为的基础上,NFC使人们的生活变…

[html] 你知道什么是粘性布局吗?

[html] 你知道什么是粘性布局吗? 中文大概意思: 对象在常态时遵循常规流。它就像是relative和fixed的合体,当在屏幕中时按常规流排版,当卷动到屏幕外时则表现如fixed。该属性的表现是现实中你见到的吸附效果。 个人简介 我是歌…

奥维地图导入西安坐标_奥维地图导入坐标样式 奥维地图批量导入经纬度坐标...

奥维地图坐标导入哪个文件夹?两个办法:  如果想导出到电脑版奥维地图里,可以采用同步到云端再下载到本地的办法解决。如果要作为数据文件保存到电脑里,可以按以下办法操作:  更多——数据管理——导入导出标记——…

kafka streams实战 pdf_spring框架实战口试材料

Spring框架自诞生倚赖从来备受开发者青睐,有人亲切的称之为:Spring 百口桶。它包SpringMVC、SpringBoot、Spring Cloud、Spring Data等处理方案。好多研发职员把spring看作心目中最佳的java项目,没有之一。Spring系列包涵非常多的项目&#x…

RTTI 简明

RTTI(Run-Time Type Identification)并不是什么新的东西,早在1993年,Bjarne Stroustrup已经提出了RTTI的相关的功能建议. 什么是RTTI? 在C 环境中﹐头文件(header file) 含有类之定义(class definition)亦即包含有关类的结构资料(representational information)。但是﹐这…

jquery日期插件_AngularJS 日期时间选择组件(附详细使用方法)

插件简介AngularJS是一款目前非常火的JavaScript脚本库,应用范围十分广阔。今天给大家分享一款基于AngularJS和jQuery的日期时间选择组件,和别的日期选择插件一样,它同样支持年月日的快速定位。另外这款AngularJS日期选择组件还支持时间的选择…

[html] android手机的微信H5弹出的软键盘挡住了文本框,如何解决?

[html] android手机的微信H5弹出的软键盘挡住了文本框,如何解决? window.addEventListener("resize", function () {if (document.activeElement.tagName "INPUT" || document.activeElement.tagName "TEXTAREA") {wind…

SecureCRT 全屏切换

使用 ALTEnter 键进行全屏和取消全屏的切换转载于:https://www.cnblogs.com/flyme/archive/2012/07/04/2575716.html

python知识图谱可视化_知识图谱可视化

## 人物关系知识图谱#### 一、背景将结构化数据通过关系预处理程序处理为图数据库可以查询的数据,示例是将其中一部分(人物关系数据)可视化表示。#### 二、用到的技术技术点:图数据库Neo4j,d3.js,java,css,…

[html] 编写一个布局,让文字环绕在图片的周围

[html] 编写一个布局,让文字环绕在图片的周围 让图片 float 就可以了,如果还想要实现文字圆形环绕图片的效果,可以使用 shape-outside: circle(); 属性个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易,…

[html] input上传文件可以同时选择多张吗?怎么设置?

[html] input上传文件可以同时选择多张吗&#xff1f;怎么设置&#xff1f; <input type"file" multiple />个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关…

My97DatePicker详细说明

js 时间插件 http://www.mysuc.com/test/My97DatePicker/#m311转载于:https://www.cnblogs.com/guyg/archive/2012/07/06/2579623.html

hsv白色h值是多少_ShaderToy系列:HSV

前言这次呢&#xff0c;继续再来看一个iq大神的简单作品&#xff0c;作品虽简单&#xff0c;但是却包含了很多知识点&#xff0c;先放上最终效果&#xff1a;ShaderToy地址&#xff1a;https://www.shadertoy.com/view/MsS3Wc不过本篇改动较大&#xff0c;最终效果与ShaderToy上…

saltstack mysql_saltstack学习五:return及入库_MySQL

return的用法网上太多资料了&#xff0c;利用return把结果存入数据库网上已经有现在的&#xff1a;1、在master端创建数据库&#xff1a;CREATE DATABASE saltDEFAULT CHARACTER SET utf8DEFAULT COLLATE utf8_general_ci;USE salt;---- Table structure for table jids--DROP …

[html] input上传图片怎样触发默认拍照功能

[html] input上传图片怎样触发默认拍照功能 使用 capture 属性&#xff0c;capture 的值可以是&#xff1a;camera 打开摄像头user 打开前置摄像头environment 打开后置摄像头以上几个属性都不能保证设备会按照设置的一样打开前置或后置摄像头&#xff0c;如果设备不支持的话&…

|DataDirectory|的使用

Ado.net2.0中新增加了一个MagicValue,可以在应用程序的配置文件的数据库链接串种使用|DataDirectory| ,例如: <connectionStrings><add name"ConnectionString"connectionString"data source.;Integrated SecuritySSPI;AttachDBFilename|DataDirector…

腾讯云对象存储 python_python 云存储

广告关闭云服务器1核2G首年99年&#xff0c;还有多款热门云产品满足您的上云需求存储桶 bucketxml python sdk 存储桶名称由两部分组成&#xff1a;用户自定义字符串 和 appid&#xff0c;两者以中划线“-”相连。 例如 mybucket1-1250000000&#xff0c;其中 mybucket1 为用户…

mysql php 入门_PHP入门教程之PHP操作MySQL的方法分析

本文实例讲述了PHP操作MySQL的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;设置Zend 软件所有 UTF-8 编码设置单个项目 UTF-8 的编码Demo1.phpheader(Content-Type:text/html; charsetutf-8;);//第一步&#xff0c;连接到 Mysql 服务器 3306//第二步参数&#…

[html] 举例说明Shadow DOM的应用场景有哪些?

[html] 举例说明Shadow DOM的应用场景有哪些&#xff1f; 可以将 shadow DOM 视为“DOM中的DOM”。它是自己独立的DOM树&#xff0c;具有自己的元素和样式&#xff0c;与原始DOM完全隔离。可以应用在组件中。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃…