所有课程
登录
软件开发
数据科学与商业分析AI与机器学习项目管理网络安全云计算DevOps业务与领导力质量管理软件开发敏捷与ScrumIT服务与架构数字营销大数据职业快速通道企业其他部分
现在的趋势
[
如何开始区块链技术的职业生涯?
文章
](www.simplilearn.com/how-to-star…
2022年要学习的最佳编程语言
文章
](www.simplilearn.com/best-progra…
区块链职业指南。成为区块链开发者的综合游戏手册
电子书
](www.simplilearn.com/blockchain-…
淘宝网上卖的是什么?
文章
](www.simplilearn.com/tutorials/p…
如何成为一名Angular开发者
文章
](www.simplilearn.com/how-to-beco…
淘宝网上的 "淘宝客 "是什么?
视频教程
](www.simplilearn.com/tutorials/n…
列表到字符串在Python中的应用
文章
](www.simplilearn.com/tutorials/p…
AngularJS Vs. Angular 2 Vs. Angular 4:了解它们的区别
文章
](www.simplilearn.com/angularjs-v…
程序预览。淘宝网上卖的是什么?
网络研讨会
](www.simplilearn.com/program-pre…
2022年Salesforce面试问题及答案TOP50
文章
](www.simplilearn.com/top-salesfo…)
泡沫排序的C语言程序,将元素按顺序排序
作者:Simplilearn最后更新于2022年6月8日98416
![]()
目录
查看更多
可能会有这样的情况,你想按特定的顺序排列数据。这时,一个排序算法就会派上用场。C语言中的泡沫排序是一种简单明了的排序算法,如果元素不在预定的顺序内,它就会检查并交换它们。它对相邻的两个元素进行比较,找出哪一个更大或更小,并根据给定的条件进行交换,直到找到元素的最终位置。在这篇文章中,你将了解到冒泡排序,以及如何用不同的方法为冒泡排序的实现编写一个C程序。
研究生课程。全栈网络开发

C语言中的冒泡排序算法
基本的冒泡排序算法可以解释如下。
bubbleSort(array)
for i <- 1 to indexOfLastUnsortedElement-1
if leftElement > rightElement
交换左元素和右元素
结束bubbleSort
这个算法对元素进行了交换,以获得最终的输出,其顺序是理想的。例如,如果你传递一个由以下元素组成的数组。(6, 3, 8, 2, 5, 7),经过冒泡排序实现的最终数组将是。(2, 3, 5, 6, 7, 8).
在C语言中进行冒泡排序的工作
如前所述,C语言程序中的冒泡排序是通过比较和交换数组中的相邻元素来进行的。让我们用一种逐步的方法来理解这一点。
假设我们想对一个有n个元素的数组进行升序排序,我们把它命名为arr,泡点排序算法是这样工作的。
- 从第一个索引开始:arr[0],比较第一个和第二个元素:arr[0]和arr[1]
- 如果arr[0]大于arr[1],它们将被交换
- 同样地,如果arr[1]大于arr[2],它们就被交换。
- 上述过程一直持续到最后一个元素arr[n-1]。
所有四个步骤在每次迭代中都会重复。在完成每个迭代后,最大的未排序元素被移到数组的末端。最后,当没有元素需要交换时,程序就结束了,我们就得到了升序排列的数组。现在我们知道了气泡排序的工作原理,让我们用不同的方法在C程序中实现它。
使用for循环实现泡泡分类的C语言程序
我们将使用for循环来编写第一个C语言程序,用于气泡排序。在这个例子中,我们将使用C语言中的嵌套for循环来对一个一维数组的元素进行排序。首先,我们将向用户询问元素的总数,然后询问值。一旦我们得到了这些元素,我们将使用for循环遍历这些元素并按升序排序。
#include <stdio.h>
int main(){
int arr[50], num, x, y, temp;
printf("Please Enter the Number of Elements you want in the array: ");
scanf("%d", &num);
printf("Please Enter the Value of Elements: ");
for(x = 0; x < num; x++)
scanf("%d", &arr[x])。
for(x = 0; x < num - 1; x++){
for(y = 0; y < num - x - 1; y++){
if(arr[y] > arr[y + 1]){
temp = arr[y];
arr[y] = arr[y + 1];
arr[y + 1] = temp;
}
}
}
printf("实施冒泡排序后的数组:")。
for(x = 0; x < num; x++){
printf("%d", arr[x])。
}
返回0。
}
输出。

新课程。全栈开发入门
学习Git命令、Angular、NodeJS、Maven及更多内容立即报名

使用While循环进行泡沫排序的C程序
在这个例子中,我们将采用与前一个例子相同的方法。唯一不同的是,我们将用嵌套的while循环代替for循环。
#include <stdio.h>
int main(){
int arr[50], num, x, y, temp;
printf("Please Enter the Number of Elements you want in the array: ");
scanf("%d", &num);
printf("Please Enter the Value of Elements: ");
for(x = 0; x < num; x++)
scanf("%d", &arr[x])。
x = 0;
while(x < num - 1){
y = 0;
while(y < num - x - 1){
如果(arr[y] > arr[y + 1]){
temp = arr[y];
arr[y] = arr[y + 1];
arr[y + 1] = temp;
}
y++;
}
x++;
}
printf("实施冒泡排序后的数组:")。
for(x = 0; x < num; x++)
printf("%d", arr[x])。
返回0。
}
输出。

使用函数进行冒泡排序的C程序
在这个泡泡排序的C语言程序中,我们将创建一个用户定义的函数,并在其中写下对数组元素进行排序的机制。下面是如何使用函数在C语言中实现冒泡排序的方法。
#include <stdio.h>
void bubbleSortExample(int arr[], int num){
int x, y, temp;
for(x = 0; x < num - 1; x++){
for(y = 0; y < num - x - 1; y++){
如果(arr[y] > arr[y + 1]){
temp = arr[y];
arr[y] = arr[y + 1];
arr[y + 1] = temp;
}
}
}
}
int main(){
int arr[50], n, x;
printf("Please Enter the Number of Elements you want in the array: ");
scanf("%d", &n);
printf("Please Enter the Value of Elements: ");
for(x = 0; x < n; x++)
scanf("%d", &arr[x])。
bubbleSortExample(arr, n);
printf("实施冒泡排序后的数组:")。
for(x = 0; x < n; x++){
printf("%d", arr[x])。
}
返回0。
}
输出。

全栈网络开发课程
成为MEAN Stack的专家查看课程

使用指针进行泡泡分类的C程序
在这个气泡排序的C语言程序中,我们使用了C语言的指针。我们所做的只是创建了另一个用户定义的函数来规范其中指针的使用。下面是实现的过程。
#include <stdio.h>
void SwapFunc(int *i, int *j){
int Temp;
Temp = *i;
*i = *j;
*j = Temp。
}
void bubbleSortExample(int arr[], int num){
int x, y, temp;
for(x = 0; x < num - 1; x++) {
for(y = 0; y < num - x - 1; y++) {
if(arr[y] > arr[y + 1]) {
SwapFunc(&arr[y], &arr[y + 1])。
}
}
}
}
int main(){
int arr[50], n, x;
printf("Please Enter the Number of Elements you want in the array: ");
scanf("%d", &n);
printf("Please Enter the Value of Elements: ");
for(x = 0; x < n; x++)
scanf("%d", &arr[x])。
bubbleSortExample(arr, n);
printf("实施冒泡排序后的数组:")。
for(x = 0; x < n; x++)
{
printf("%d", arr[x])。
}
返回0。
}
输出。

优化实现冒泡排序的C程序
在标准的冒泡排序中,所有的元素都要进行比较,即使最后的元素已经根据以前的迭代进行了排序。这增加了执行时间,可以通过优化泡沫排序的C程序来减少。我们所要做的就是引入一个额外的变量;我们把它命名为Swap。
如果发生了元素互换,变量Swap被设置为真;否则,它就是假的。当程序发现Swap变量的值为false时,它将理解为排序已经完成并脱离循环。这将通过优化算法来减少执行时间。下面的代码显示了如何优化C程序的冒泡排序。
#include <stdio.h>
// 用于冒泡排序的函数
void bubbleSortExample(int arr[], int n){
for (int i = 0; i < n - 1; ++i){
int Swap = 0;
// 对比数组元素
for (int x = 0; x < n - i - 1; ++x){
if (arr[x] > arr[x + 1]){
int temp = arr[x];
arr[x] = arr[x + 1];
arr[x + 1] = temp;
Swap = 1。
}
}
if (Swap == 0){ // 不需要换位。
休息。
}
}
}
void displayArray(int arr[], int n){
for (int x = 0; x < n; ++x){
printf("%d", arr[x])。
}
printf("\n")。
}
// 驱动方法
int main(){
int data[] = {27, 13, -54, 93, -20};
// 寻找数组的长度
int n = sizeof(data) / sizeof(data[0])。
bubbleSortExample(data, n);
printf("实施冒泡排序后的数组:\n")。
displayArray(data, n);
}
输出。

全栈Java开发者课程
与HIRIST和HackerEarth合作探索课程

C语言中泡点排序的复杂性
时间复杂度
- 最坏情况下的复杂度:如果数组元素是降序的,而我们想把它变成升序的,这就是最坏情况。最坏情况下的时间复杂度是O(n²)。
- 最佳情况下的复杂度。最好的情况是所有的元素都已经排序了,不需要交换。这种情况下的时间复杂度是O(n)。
- 平均情况下的复杂度。这是元素杂乱无章时的情况。泡沫排序中的平均情况的时间复杂度是O(n²)。
空间复杂度
- 标准的冒泡排序算法的空间复杂度是O(1),因为需要一个额外的变量来临时保存被交换的元素。
- 泡沫排序算法的优化实现的空间复杂度是O(2)。这是因为需要两个额外的变量。
C语言中气泡排序的应用
使用C语言中的冒泡排序程序的最佳场景是:。
- 复杂度不重要
- 执行速度慢并不重要
- 简洁易懂的编码是首选
通过全栈网络开发--MEAN栈硕士课程,推进你作为MEAN栈开发者的职业生涯。现在就报名参加!
C语言中泡点排序的替代品
除了泡点排序算法,你还可以使用以下排序算法对数组和列表进行排序。
- 快速排序
- 选择排序
- 合并排序
- 插入排序
观看下面的视频,它将帮助你了解什么是冒泡排序算法以及冒泡排序的实时工作原理。
结束语
在这篇文章中,你已经了解了什么是冒泡排序,以及如何以不同的方式编写冒泡排序的C程序。现在你可以把你的知识用于实践,磨练你的技能。要了解更多这样的基本C语言编程概念,你可以注册我们的SkillUp平台。该平台提供大量免费课程,帮助你学习和理解各种编程语言的概念,包括C和C++。
在当今竞争激烈的世界中,仅仅学习一门编程语言的基础知识是不够的。因此,掌握多种语言是至关重要的。为此,你可以选择我们的全栈式网络开发认证课程。该认证课程融合了世界上最流行的一些开发语言。通过注册该课程,你将有机会学习多种编程语言和相关工具,使自己在跨国公司获得一份有利可图的高薪工作。
关于作者
Simplilearn是世界领先的数字营销、云计算、项目管理、数据科学、IT、软件开发和其他许多新兴技术的在线培训供应商之一。
查看更多
推荐课程
[

全栈网络开发的研究生课程
3245名学员
终身访问*。
](www.simplilearn.com/pgp-full-st…

全栈网络开发人员 - MEAN Stack
925名学员
终身访问*
](www.simplilearn.com/full-stack-…)
*终身享受高质量、自定进度的电子学习内容。
[
下一篇
C语言程序中的堆排序
由Simplilearn提供
1818Apr 21, 2022
](www.simplilearn.com/tutorials/c…)
推荐资源
-
[

2021年顶级前端和后端编程语言终极指南
-
[

C语言编程中的快速排序简介
-
[

关于泡沫排序算法,你需要知道的一切
-
[

免费电子书。指南:Scrum方法学
-
[

关于Python中的排序,你需要知道的一切
Article](www.simplilearn.com/tutorials/p…)
-
[

插入式排序算法。一站式解决方案将帮助你理解插入式排序
上一页下一页
© 2009 -2022- Simplilearn Solutions
关注我们!
公司介绍
与我们合作
发现问题
技能提升资源RSS订阅Simplilearn优惠券和折扣优惠城市地图
为企业服务
在旅途中学习!
流行的研究生课程
项目管理认证课程|网络安全认证课程|数据科学PG课程|数据分析训练营课程|商业分析认证课程|数字营销认证课程|精益六西格玛认证课程|云计算认证课程|数据工程训练营|AI和机器学习课程|全栈网络开发课程
流行的硕士课程
PMP Plus认证培训课程|大数据工程课程|数据科学认证课程|数据分析师认证课程|人工智能课程|云架构师认证培训课程|DevOps工程师认证培训课程|高级数字营销课程|网络安全专家课程|MEAN栈开发课程
潮流课程
PMP认证培训课程|大数据Hadoop认证培训课程|Python数据科学认证课程|机器学习认证课程|AWS解决方案架构师认证培训课程|CISSP认证培训|认证ScrumMaster(CSM)认证培训|ITIL 4基础认证培训课程|Java认证课程|Python认证培训课程
潮流资源
Python教程|JavaScript教程|Java教程|Angular教程|Node.js教程|Docker教程|Git教程|Kubernetes教程|Power BI教程|CSS教程
smpl_2022-06-08
- 免责声明
- PMP、PMI、PMBOK、CAPM、PgMP、PfMP、ACP、PBA、RMP、SP和OPM3是美国项目管理协会的注册商标。