冒泡排序的两种⽅式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;
}
输出结果
以上只是冒泡排序算法的基本实现,还有很⼤的优化空间.⾄于优化的具体细节,详见下⽂.
(本⽂来源于互联⽹,若有侵权,请联系博主)
R语⾔两种⽅式求指定⽇期所在⽉的天数
R语⾔两种⽅式求指定⽇期所在⽉的天数 days_monthday
C语⾔两种⽅式实现矩阵的转置
#include"stdio.h" typedef struct{ int i,j; int v; }Triple; typedef struct{ Triple date[]; ...
C#两种基本的冒泡排序算法
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI ...
通过调⽤C语⾔的库函数与在C代码中使⽤内联汇编两种⽅式来使⽤同⼀个系统调⽤来分析系统调⽤的⼯作机制
通过调⽤C语⾔的库函数与在C代码中使⽤内联汇编两种⽅式来使⽤同⼀个系统调⽤来分析系统调⽤的⼯作机制 前⾔说明 本篇为⽹易云课堂Linux内核分析课程的第四周作业,我将通过调⽤C语⾔的库函数与在C代码中 ...
C语⾔中存储多个字符串的两种⽅式
C语⾔中存储多个字符串的两种⽅式 ⽅式⼀ ⼆维字符串数组 声明: char name[][] = { "Justinian", "Momo", " ...
JavaScript 算法应⽤: 遍历DOM树的两种⽅式
c语言斐波那契数列1 常见的DOM树结构:
2 DOM数遍历有两种⽅式:
3 ⼴度优先代码:
4 深度优先遍历代码
[算法基础]斐波那契(recursion+loop)两种⽅式执⾏时间对⽐
⼀.斐波那契数列求第n项两种⽅式 1.递归(⾃上⽽下)def recur_fibonacci(n): if n <= 0: return 0 if n == 1: return 1 return ...
求GCD(最⼤公约数)的两种⽅式
求GCD(最⼤公约数)的两种⽅式 这篇随笔讲解C++语⾔程序设计与应⽤中求GCD(最⼤公约数,下⽂使⽤GCD代替)的两种常⽤⽅式:更相减损法和辗转相除法,前提要求是具有⼩学数学的基本素养,知道GCD是 ...
WebService的两种⽅式Soap和Rest⽐较
我的读后感:由于第⼀次接触WebService,对于很多概念不太理解,尤其是看到各个OpenAPI的不同提供⽅式时,更加疑惑.如google map api 采⽤了AJAX⽅式,通过javascript ...
随机推荐
【Python⽹络编程】利⽤Python进⾏TCP、UDP套接字编程
之前实现了Java版本的TCP和UDP套接字编程的例⼦,于是决定结合Python的学习做⼀个Python版本的套接字编程实验. 流程如下: 1.⼀台客户机从其标准输⼊(键盘)读⼊⼀⾏字符,并通过其套接 ...
web 前端常⽤组件【03】Bootstrap Multiselect
Java ⽇期格式化⼯具类
ParseException; SimpleDateFormat; import java.util.Calendar; impor ...
NOIP2011 聪明的质监员
描述 ⼩T 是⼀名质量监督员,最近负责检验⼀批矿产的质量.这批矿产共有 n 个矿⽯,从 1到n 逐⼀编号,每个矿⽯都有⾃⼰的重量 wi 以及价值vi .检验矿产的流程是: 1 .给定m 个区间[Li ...
logstash配合filebeat监控tomcat⽇志
环境:logstash版本:5.0.1&&filebeat 5.0.1 ABC为三台服务器.保证彼此tcp能够相互连接. Index服务器A - 接收BC两台服务器的tomcat ⽇志 ...
python框架(flask/django/tornado)⽐较
⼀.对外数据接⼝ 三者作为web框架,都是通过url映射对外的接⼝ flask:以decorator的形式,映射到函数中 django:以字典形式,映射到函数tornado: 以字典形式,映射到类中 ...
Inno Setup 插件⼤全
Inno Setup 插件⼤全 这是我收集到的⽬前⽹上最全的插件之⼀,⾥⾯的每个插件,都有详细的脚本⽰例来讲解该插件的具体⽤法.另外,下载了我公开的脚本的朋友,也有可能会被提⽰缺少⽂件,如果缺 ...
【开源项⽬13】Volley框架 以及 设置request超时时间
Volley提供了优美的框架,使android程序⽹络访问更容易.更快. Volley抽象实现了底层的HTTP Client库,我们不需关注HTTP Client细节,专注于写出更加漂亮.⼲净的RES ...
mysqlsla慢查询分析⼯具教程
mysqlsla是⼀款帮助语句分析.过滤.和排序的功能,能够处理MySQL慢查询⽇志.⼆进制⽇志等.整体来说, 功能⾮常强⼤. 能制作SQL查询数据报表,分析包括执⾏频率, 数据量, 查询消耗等. 且 ...
线程取消 (pthread_cancel)
线程取消(pthread_cancel) 基本概念pthread_cancel调⽤并不等待线程终⽌,它只提出请求.线程在取消请求(pthread_cancel)发出后会继续运⾏,直到到达某个取消点(C ...
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论