冒泡排序算法的原理:
1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2、对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3、针对所有的元素重复以上的步骤,除了最后一个。
4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
扩展资料:
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
算法稳定性:
冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,是不会再交换的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。
参考资料:百度百科-冒泡排序法
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从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;
}
参考资料:
本回答被网友采纳它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
扩展资料:
时间复杂度
若文件的初始状态是正序的,一趟扫描即可完成排序。所需的关键字比较次数
和记录移动次数
次关键字的比较(1≤i≤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. 持续每次对越来越少的元素重复上面的步骤,直到...