冒泡排序法是如何排序的???

C语言中编程中的冒泡排序法,最好给一个例子~~~

冒泡排序算法的原理:

1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。

2、对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

3、针对所有的元素重复以上的步骤,除了最后一个。

4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

扩展资料:

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。

它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。

这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

算法稳定性:

冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,是不会再交换的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。

参考资料:百度百科-冒泡排序法

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-06-03

它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。

冒泡排序算法的原理如下:

比较相邻的元素。如果第一个比第二个大,就交换他们两个。

对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

针对所有的元素重复以上的步骤,除了最后一个。

持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

扩展资料:

举例:C语言

#include<stdio.h>

#define ARR_LEN 255/*数组长度上限*/

#define elemType int/*元素类型*/

/*冒泡排序*/

/*1.从当前元素起,向后依次比较每一对相邻元素,若逆序则交换*/

/*2.对所有元素均重复以上步骤,直至最后一个元素*/

/*elemType arr[]:排序目标数组;int len:元素个数*/

void bubbleSort(elemType arr[],int len){

elemType temp;

int i,j;

for(i=0;i<len-1;i++)/*外循环为排序趟数,len个数进行len-1趟*/

for(j=0;j<len-1-i;j++){/*内循环为每趟比较的次数,第i趟比较len-i次*/

if(arr[j]>arr[j+1]){/*相邻元素比较,若逆序则交换(升序为左大于右,降序反之)*/

temp=arr[j];

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

arr[j+1]=temp;

}

}

}

int main(void){

elemType arr[ARR_LEN]={3,5,1,-7,4,9,-6,8,10,4};

int len=10;

int i;

bubbleSort(arr,len);

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

printf("%d\t",arr<i>);

putchar('\n');

return 0;

}

参考资料:

百度百科——冒泡排序

本回答被网友采纳
第2个回答  2020-04-06

它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。

这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

扩展资料:

时间复杂度

若文件的初始状态是正序的,一趟扫描即可完成排序。所需的关键字比较次数

 和记录移动次数

次关键字的比较(1≤i≤n-1),且每次比较都必须移动记录三次来达到交换记录位置。在这种情况下,比较和移动次数均达到最大值:

本回答被网友采纳
第3个回答  推荐于2017-09-27
其实很简单,就是一个一个进行对比如果a<b/a>b就把两个变量进行交换,使得最大/最小的排在前面。
2 4 3 5 1 五个数
2<4 交换成为 42351
2<3 成为 43251
2<5 成为 43521
2>1 不交换 43521
然后最小的1就一定会在最后
然后比较前4个数,4>3,3<5(交换),3>2;
成为45321,
前3个数4<5(交换),4>3
就成为了54321
这是一个巧合的例子,程序应该还要比较前两个数
5>4
最后成为54321。
以下是样例程序。

#include<stdio.h>
int main()
{
int a[5]={2,4,3,5,1};
int i,j,t; //i,j是计数器,t用作交换
for(i=0;i<5;i++)
{
for(j=0;j<5-i-1;j++)
{
if(a[j]<a[j+1]) //如果后面的数字大于前面的数字
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t; //就把两个数交换
}
}
}
printf("%d %d %d %d %d\n",a[0],a[1],a[2],a[3],a[4]);
return 0; //程序正常结束
}

你懂了么?本回答被提问者采纳
第4个回答  2012-07-25
比如有一组数为12,23,1,4,2,6。需要使用冒泡排序方法使这组数从小到大排列。首先12和23比较,12<23,则位置不变;接着23和1比较,因为23>1,所以交换23和1的位置,这组数这时是12 1 23 4 2 6;然后比较23和4,因为23>4,所以交换23和4,这组数变为12 1 4 23 2 6;然后比较23和2,23>2,再交换,变为12 1 4 2 23 6;然后比较23和6,23>6,再交换,最后为12 1 4 2 6 23。这就叫经过了一趟排序,即相邻两数比较,大的放在后面,经过一趟排序后,最大的数就冒泡到最后面了。然后再对前n-1个数进行第二趟排序,排序后第二大的数就放在了第n-1个位置;最后经过n-1趟排序后整个数组就有序了。本回答被网友采纳

冒泡排序法是如何排序的???
冒泡排序算法的原理:1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。2、对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3、针对所有的元素重复以上的步骤,除了最后一个。4、持续每次对越来越少的元素重复上面的步骤,直到没有...

冒泡排序法是如何排序的???
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。冒泡排序算法的原理如下:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对...

谁能讲一下冒泡排序原理?
冒泡排序算法的原理如下:1,比较相邻的元素。如果第一个比第二个大,就交换他们两个。2,对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3,针对所有的元素重复以上的步骤,除了最后一个。4,持续每次对越来越少的元素重复上面的步骤,直到...

冒泡排序的原理
冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,是不会再交换的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换。冒泡排序 选择排序算法的基本思路是为每一个位置选择...

冒泡排序(Bubble Sort)的学习
冒泡排序(Bubble Sort)是一种简单的排序算法,其基本概念是通过重复比较和交换相邻元素,使得较大的元素逐渐“浮”至数列顶端。算法的时间复杂度不能突破O(nlogn),属于非线性时间比较类排序。冒泡排序的核心原理是:比较两个相邻的元素,将值大的元素交换到右边。这一步骤重复进行直至整个数列排序完成。

如何用冒泡法从小到大排序?
冒泡排序算法的运作如下:1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3、针对所有的元素重复以上的步骤,除了最后一个。4、持续每次对越来越少的元素重复上面的步骤,直到没...

什么是冒泡排序法?能说具体点吗?
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放...

冒泡排序的过程是怎样的?
首先,对于给定的数字序列45,43,56,32,15进行冒泡排序,我们可以得到排序后的结果为:15,32,43,45,56。冒泡排序是一种简单的排序算法,其工作原理是重复地遍历待排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该...

来、通俗聊聊冒泡排序
具体实现上,冒泡排序算法通常包含一个外层循环和一个内层循环。外层循环控制排序的趟数,内层循环负责每次比较并交换相邻元素。以四个石子为例,第一次排序后最大的石子会移动到最右边,然后从剩下的三个石子中再次排序,以此类推,直到所有石子排序完成。时间复杂度方面,冒泡排序的最坏情况和平均情况的...

python冒泡排序法求告知哪里错了_(:з」∠)_
冒泡排序算法的运作如下:1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。3. 针对所有的元素重复以上的步骤,除了最后一个。4. 持续每次对越来越少的元素重复上面的步骤,直到...

相似回答