1. c++语言中的冒泡排序如何显示排序过程
冒泡排序(递增)是把小的数据向上推移的一种排序技术。具体的推导过程见ppt课件,教师根据课件的演示进行讲解。为了帮助学生理解,有时间可以让若干个学生演示排序的过程,还可以观看教材配套的“冒泡排序.swf”动画,以加深理解。算法分析后,在学生理解冒泡排序程序的基础上,完成VB程序的设计,界面如下:
控件信息如下:
控件
属性
属性值
说明
Form1
Caption
冒泡排序算法分析及实现
显示程序的功能
Command1
Caption
<<<自动生成数据
说明命令按钮的作用
Command2
Caption
开始冒泡排序>>>
说明命令按钮的作用
Text1
text
空串
输入要生成多少个数据
Lable1
Caption
待排序:
说明文本框list1的作用
Lable2
Caption
已排序:
说明文本框List2的作用
Lable3
Caption
排序数据量:
说明文本框text1的作用
List1
使用缺省值
显示自动生成的待排序数据
List2
使用缺省值
显示排好序以后的数据
Command1的作用是click后生成系列整数,具体个数由text1文本框里输入的数据决定。要用到Rnd()生成(0,1)的一个随机数,round()四舍五入两个函数。具体代码见源程序。学生完成程序制作后,若有时间可进行知识拓展,如介绍算法时是使数据递增,能否修改程序使之完成递减排序的功能。增加一个label4标签,显示冒泡排序消耗的时间。以便下一课与选择排序的效率进行比较。生成可执行文件
2. 什么是冒泡法
冒泡法是指冒泡排序,是一种计算机科学领域的较简单的排序算法。
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
冒泡排序算法的原理如下:
1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2、对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3、针对所有的元素重复以上的步骤,除了最后一个。
4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
3. 什么是冒泡法[详细的讲下]
冒泡排序 冒泡排序:BubbleSort
基本概念
冒泡排序的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再大于第2个数),将小数放前,大数放后,一直比较到最小数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最小数。如此下去,直至最终完成排序。
由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。
用二重循环实现,外循环变量设为i,内循环变量设为j。外循环重复9次,内循环依次重复9,8,...,1次。每次进行比较的两个元素都是与内循环j有关的,它们可以分别用a[j]和a[j+1]标识,i的值依次为1,2,...,9,对于每一个i, j的值依次为1,2,...10-i。
产生
在许多程序设计中,我们需要将一个数列进行排序,以方便统计,常见的排序方法有冒泡排序,二叉树排序,选择排序等等。而冒泡排序一直由于其简洁的思想方法和比较高的效率而倍受青睐。
排序过程
设想被排序的数组R[1..N]垂直竖立,将每个数据元素看作有重量的气泡,根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R,凡扫描到违反本原则的轻气泡,就使其向上"漂浮",如此反复进行,直至最后任何两个气泡都是轻者在上,重者在下为止。
算法示例
49 13 13 13 13 13 13 13
38 49 27 27 27 27 27 27
65 38 49 38 38 38 38 38
97 65 38 49 49 49 49 49
76 97 65 49 49 49 49 49
13 76 97 65 65 65 65 65
27 27 76 97 76 76 76 76
49 49 49 76 97 97 97 97
Procere BubbleSort(Var R : FileType) //从下往上扫描的起泡排序//
Begin
For I := 1 To N-1 Do //做N-1趟排序//
begin
NoSwap := True; //置未排序的标志//
For J := N - 1 DownTo 1 Do //从底部往上扫描//
begin
If R[J+1]< R[J] Then //交换元素//
begin
Temp := R[J+1]; R[J+1 := R[J]; R[J] := Temp;
NoSwap := False
end;
end;
If NoSwap Then Return//本趟排序中未发生交换,则终止算法//
end
End; //BubbleSort//
该算法的时间复杂性为O(n2),算法为稳定的排序方
冒泡排序c++代码
#include <iostream.h>
void BubbleSort(int* pData,int Count)
{
int iTemp;
for(int i=1;i<Count;i++)
{
for(int j=Count-1;j>=i;j--)
{
if(pData[j]<pData[j-1])
{
iTemp = pData[j-1];
pData[j-1] = pData[j];
pData[j] = iTemp;
}
}
}
}
void main()
{
int data[] = {10,9,8,7,6,5,4};
BubbleSort(data,7);
for (int i=0;i<7;i++)
cout<<data[i]<<" ";
cout<<"\n";
}
冒泡排序Ruby代码
def bubble(arr)
(arr.length-1).downto(1) do |j|
a1 = arr.p
j.times do |i|
if arr > arr[i+1]
arr,arr[i+1] = arr[i+1],arr
end
end
break if a1 == arr
end
arr
end
冒泡排序java代码
static void BubbleSort(int a []){
int temp=0;
for (int i = 0; i < a.length ; i++) {
for (int j = 0; j < a.length - i - 1; j++){
if (a[j]>a[j + 1]){ //把这里改成大于,就是升序了
temp=a[j];
a[j]=a[j + 1];
a[j + 1]=temp;
}
}
}
}
冒泡排序Visual Basic代码
Option Explicit
Private Sub Form_click()
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
冒泡排序Pascal代码
<i id="bks_9tjbxut2">program bubblesort;
const
N=20;
MAX=10;
var
a:array[1..N] of 1..MAX;
temp,i,j:integer;
begin
randomize;
for i:=1 to N do a:=1+random(MAX);
writeln('Array before sorted:');
for i:=1 to N do write(a,' ');
writeln;
for i:=N-1 downto 1 do
for j:=1 to i do
if a[j]<a[j+1] then
begin
temp:=a[j];
a[j]:=a[j+1];
a[j+1]:=temp
end;
writeln('Array sorted:');
for i:=1 to N do write(a,' ');
writeln;
writeln('End sorted.');
readln;
end.
冒泡排序C#代码
public void BubbleSort(int[] array) {
int length = array.Length;
for (int i = 0; i <= length - 2; i++) {
for (int j = length - 1; j >= 1; j--) {
if (array[j] < array[j - 1] ) {
int temp = array[j];
array[j] = array[j - 1];
array[j - 1] = temp;
}
}
}
}
冒泡排序Python代码
#algo
def bubble(list):
count = len(list) -1
while count > 0 :
i = 0
onceflag = True
while i < count :
if int(list) > int(list[i+1]) :
tmp = list
list = list [i+1]
list[i+1] =tmp
onceflag = False
i = i + 1
if onceflag : return list
count = count - 1
return list
#test
li = [1,9,8,5,4,3,6,7,0,2]
print bubble(li)
冒泡排序法的改进
比如用冒泡排序将4、5、7、1、2、3这6个数排序。在该列中,第二趟排序结束后,数组已排好序,但计算机此时并不知道已经反排好序,计算机还需要进行一趟比较,如果这一趟比较,未发生任何数据交换,则知道已排序好,可以不再进行比较了。因而第三趟比较还需要进行,但第四、五趟比较则是不必要的。为此,我们可以考虑程序的优化。
为了标志在比较中是否进行了,设一个布尔量flag。在进行每趟比较前将flag置成true。如果在比较中发生了数据交换,则将flag置为false,在一趟比较结束后,再判断flag,如果它仍为true(表明在该趟比较中未发生一次数据交换)则结束排序,否则进行下一趟比较。
性能分析
若记录序列的初始状态为"正序",则冒泡排序过程只需进行一趟排序,在排序过程中只需进行n-1次比较,且不移动记录;反之,若记录序列的初始状态为"逆序",则需进行n(n-1)/2次比较和记录移动。因此冒泡排序总的时间复杂度为O(n*n)。
4. 冒泡算法
它重复地走访过要排序的数列,一次比较两个元素,
如果他们的顺序错误就把他们交换过来。
走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
先把第一个作为最大的用max表示 依次与后面的每个数进行比较,如果数>max 则把此数作为新的max 继续重复,只到排完
第一次:22 45 13 56 69 67 38 87
第二次:22 13 45 56 67 38 69 87
第三次:13 22 45 56 38 67 69 87
第四次:13 22 45 38 56 67 69 87
完成排序
最后加一句,满意请采纳哦!
5. 谁能讲一下冒泡排序原理
冒泡排序算法的原理如下:
1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
(5)冒泡算法讲解ppt扩展阅读:
算法优化:当里面的一层循环在某次扫描中没有交换则说明此时数组已经全部有序,无需再再次扫描。
所以可以添加一个标记每交换一次就进行标记,如果某次没有没有标记就说明已经有序了
写冒泡排序可以排序多个字符串。假设对4个字符串进行排序,每个字符串不超过10个 ,那么可以把这三个字符串看成一个二维数组,这样一个一位数组的指针就可以访问该数组,然后根据冒泡排序的原理就可以排序了。
冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。
所以,如果两个元素相等,是不会再交换的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。
6. 冒泡排序的算法原理
冒泡排序算法的运作如下:(从后往前) 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
7. 关于C语言冒泡算法的详解
冒泡法又称起泡法,属于交换排序.假设待排序数组a的长度是n,排序过程如下:
1)令i=0
2)另j=n-1(从最后一个元素开始)
3)比较a[j-1]与a[j],若a[j-1]>a[j],则把它们交换
4)若j>i,则令j--,转到3),否则转到5)
5)若i<n-1,则令i++,转到2),否则转到6)
6)完成排序
8. java冒泡排序详细讲解
就是 一组数字组成的数组,两两比较,大的数往后推,小的数向前
从头开始扫描待排序的元素,在扫描过程中依次对相邻元素进行比较,将关键字值大的元素后移。每经过一趟排序后,关键字值最大的元素将移到末尾,此时记下该元素的位置,下一趟排序只需要比较到此位置为止,直到所有元素都已有序排列。