冒泡排序是什么?

作者&投稿:易向 (若有异议请与网页底部的电邮联系)
什么是冒泡排序算法~

经典排序之冒泡排序

举个例子:
比如说有一组数组:1,6,3,9,7,4
想要给它做排序,把这个数组从小到大的排列
这里就可以使用冒泡算法(就像河里的泡向上冒,小的泡会在大的泡的上面一样)

这里冒泡排序就是小的数字一个一个往前移,直到前面没有比它大的数了,就停下来,每个数都同理。

程序举例(仍旧是上面的例子,但是我用的不是c语言,但你应该看得懂)

int[] array=new int[6]{1,6,3,9,7,4};
for(int m=0;m<6;m++)
{
for(int n=5;n>0;n--)
{
if(array[n]<array[n-1])
{
int temp=array[n];
array[n]=array[n-1];
array[n-1]=temp;
}
}。

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

它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

冒泡排序算法运作原理:

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

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

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

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



基本思路:对尚未排序的各元素从头到尾依次比较相邻的两个元素是否逆序(与欲排顺序相反),若逆序就交换这两元素,经过第一轮比较排序后便可把最大(或最小)的元素排好,然后再用同样的方法把剩下的元素逐个进行比较,就得到了你所要的顺序。可以看出如果有 n 个元素,那么一共要进行 n-1 轮比较,第 i 轮要进行 j=n-i 次比较。

我也不知道你说的是用哪种语言编写:就列出了如下几种,希望你能满意
#include
void main()
{
int a[10];
int i,j,t;
printf("输入10个整数:\n");
for( i = 0; i < 10; i ++ )
scanf("%d",&a[ i ]); //依次输入10个整数
for( j = 0; j < 9; j ++ ) //进行9轮排序 即n-1次
{
for( i = 0; i < 9-j; i ++) //每轮进行n-1-j 次比较,最多n-1-j 次交换
if( a[ i ] > a[ i + 1 ] )
{
t = a[ i ] ;
a[ i ] = a[ i + 1 ]; //小的沉底,大的上浮
a[ i + 1 ] = t;
}
}
printf("排序结果:");
for( i = 0; i < 10; i ++ ) //依次输出排序结果
printf("%d\t",a[ i ]);
printf("\n");
}
PASCAL为例子
procedure Bubble_Sort(var L:List);
vari,j:position;
begin
for i:=First(L) to Last(L)-1 do
for j:=First(L) to Last(L)-i do
if L[j]>L[j+1] then 4 swap(L[j],L[j+1]);
//交换L[j]和L[j+1]
end;
下面使用c++语言编写
#include
void main()
{
int a[n],i,j,temp;
cout<<"请输入数字:"<<endl;
for(i=0;i<=n;i++)
cin>>a; //依次输入n个整数
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
if(a<a[j]) //利用临时变量temp交换顺序
{ temp=a[j];
a[j]=a;
a=temp;
}
cout<<a<<' '; //依次输出结果
}
下面使用Visual Basic编写
Option Explicit
Private Sub Form_Load()
Dim a, c As Variant
Dim i As Integer, temp As Integer, w As Integer
a = Array(12, 45, 17, 80, 50)
For i = 0 To UBound(a) - 1
If (a(i) > a(i + 1)) Then '若是递减,改为a(i)<a(i+1)
temp = a(i)
a(i) = a(i + 1)
a(i + 1) = temp
End If
Next
For Each c In a
Print c;
Next
End Sub

经典排序之冒泡排序




冒泡是什么意思啊?
冒泡排序的基本思想是让越大的元素不断往后移动,直到把最大的元素移动到了数组的尾端。这个过程就像水中的气泡往上冒,因此被称为冒泡排序。该算法的时间复杂度为O(n2),是常用的排序算法之一。冒泡排序的具体实现非常简单,只需嵌套两个循环,外循环控制比较的轮数,内循环控制每轮比较的次数。每一...

什么是排序?常用的排序方法有哪些?比较一下冒泡排序和选择排序算法上的...
相似之处:1、都是比较排序:冒泡排序和选择排序都是通过比较相邻元素的大小,然后交换位置来实现排序的,因此它们都属于比较排序算法。2、都需要进行多次遍历:无论是冒泡排序还是选择排序,都需要多次遍历待排序的序列,才能实现排序。不同之处:1、操作方式不同:冒泡排序是依次比较相邻元素的大小,如果...

线性表里的冒泡排序和快速排序是什么?比较次数有什么区别?
冒泡排序是一种交换排序方式。设有n个数据依次放在数组元素a(1)至a(n)中,用冒泡法对这n个数据进行递增排序的过程为:先比较a(1)与a(2),若逆序则交换之,接着比较a(2)与a(3),若逆序就交换……依次进行,知道将a(n-1)与a(n)比较交换完,才算完成了第一轮比较交换。然后以同样规则进行...

有哪些排序算法是稳定的?
稳定的排序算法:冒泡排序、插入排序、归并排序、基数排序、计数排序。1、冒泡排序:冒泡排序是一种基本的比较排序算法,它通过多次遍历数据来将较大的元素逐渐“冒泡”到数组的末尾。冒泡排序是稳定的,但在大型数据集上性能较差。2、插入排序:插入排序是一种简单的排序算法,它逐个将元素插入已排序的部分...

将五个数的序列排序,从小到大排列,有多少种排法?
排序有很多种方法,常用的有三种:冒泡排序、选择排序、插入排序等,下面我们就对这三种方法做一下分析和比较,以便大家能够更好的理解和应用。一、冒泡排序 1、冒泡排序的基本思想:对于n个数进行排序(现假定是从大到小排序,以下均按此进行),将相邻两个数依次比较,将大数调在前头:也就是说第一...

几种常见的排序(冒泡、选择、插入、希尔、堆排序)
简单排序算法(Simple Selection Sort) 就是通过n-i次关键词比较,从n-i+1个记录中找出关键 字最小的记录,并和第i(1<=i<=n) 个记录进行交换. 总结一句话就是(划重点):从第一个位置开始比较,找出最小的,和第一个位置互换,开始下一轮。(1)冒泡排序是比较相邻位置的两个数,而选择排序...

对N个元素进行排序,用冒泡法进行排序时,共需排几次?
最好情况需比较n-1次,最坏情况需比较(n-1)\/2。冒泡排序基本思想: 冒泡排序,类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来,假设从小到大,即为较大的数慢慢往后排,较小的数慢慢往前排。直观表达,每一趟遍历,将一个最大的数移到序列末尾。基本步骤:1、外循环是遍历每个元素,每次...

常见的排序算法—选择,冒泡,插入,快速,归并
太久没看代码了,最近打算复习一下java,又突然想到了排序算法,就把几种常见的排序算法用java敲了一遍,这里统一将无序的序列从小到大排列。 选择排序是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小元素,继续...

Java冒泡排序中i、j各代表什么意思?
没有什么特别的含义。冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越大的元素...

数学上的冒泡法是什么?
冒 泡 法:目的:按要求从大到小或从小到大排序。基本思路:对尚未排序的各元素从头到尾依次依次比较相邻的两个元素是否逆序(与欲排顺序相反),若逆序就交换这两元素,经过第一轮比较排序后便可把最大(或最小)的元素排好,然后再用同样的方法把剩下的元素逐个进行比较,就得到了你所要的顺序。...

中卫市18570789837: 冒泡排序(计算机排序算法) - 搜狗百科
赖疫禾保: 冒泡排序,是指计算机的一种排序方法,它的时间复杂度为O(n^2),虽然不及堆排序、快速排序的O(nlogn,底数为2),但是有两个优点:1.“编程复杂度”很低,很容易写出代码;2.具有稳定性,这里的稳定性是指原序列中相同元素的相对顺序...

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

中卫市18570789837: 什么是冒泡排序法? -
赖疫禾保: 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法...

中卫市18570789837: 冒泡法排序的定义是什么? -
赖疫禾保: 基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大...

中卫市18570789837: 冒泡排列是什么意思? -
赖疫禾保: 就是给你一些数字,然后用算法把他从大到小排序.因为是大的往前一个个的放,就像水里的泡泡一样,故而的名.

中卫市18570789837: 冒泡排序法详解 -
赖疫禾保: 冒泡排序:BubbleSort 基本概念 冒泡排序的基本概念是:依次比较相邻的两个数,将大数放在前面,小数放在后面.即首先比较第1个和第2个数,将大数放前,小数放后.然后比较第2个数和第3个数,将大数放前,小数放后,如此继续,直...

中卫市18570789837: 什么叫冒泡排序法
赖疫禾保: 简单通俗的说,假如要将n个数从大到小排列,那就将第一个数和后面的每一个数比较,每次比较后把大的赋给第一个数;然后再拿第二个数和后面的每个数比较,每次比较后把大的赋给第二个数;再按规律继续比较.比较的次数也就是(n-1)+(n-2)+(n-3)...+(1).

中卫市18570789837: C语言的冒泡排序是什么?求解释
赖疫禾保: 你好,很高兴为你解答所谓冒泡排序即:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后.然后...

中卫市18570789837: 什么是冒泡排序?
赖疫禾保: 貌似冒泡排序都是一样的吧.. 比如说2 4 1 5 9 3要从小到大排序先比较2 4,顺序正确. 然后4 1,逆序,交换变成2 1 4 5 9 3 接下来比较4 5,正确 5 9 正确 9 3 逆序,交换 于是第一趟排序结果是2 1 4 5 3 9 接着第二趟排序 2 1 逆序,交换 1 2 4 5 3 9 2 4 正确, 4 5 正确, 5 3 错误,交换 1 2 4 3 5 9, 这样进行交换,一直到整个序列顺序都正确为止.. 由于每趟排序的时候,最后一个数必定是最大的(降序排序时是最小的),就像气泡升起一样..所以叫做冒泡排序..

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网