本文目录
- c语言中冒泡法是什么意思
- 什么是冒泡法[详细的讲下]
- C语言简单冒泡法程序
- 数学上的冒泡法是什么
- 什么是冒泡排序算法
- 冒泡法和选择排序
- c语言 冒泡法是什么啊
- 什麽是“冒泡法”
- 冒泡法和选择法的区别在哪里
- 冒泡法排序怎么弄
c语言中冒泡法是什么意思
冒泡法是一种排序方法
冒泡法 5 4 3 2 1
比如上面这5个数字我们把它按照由小到大的顺序排列,
从前往后相临两位比较大小,如果前一位比后一位大就把它俩
换位,5比4大就把5和4换位,得到45321
5又比3大 5和3换位 得到43521 依次类推最后得到
43215 这样就把最大的一个数字移到最后面了
然后不看5 ,剩下4321 再用上面的方法把4移动到最后
得到 32145 在不看45 剩下321 把3移动到
最后,依此类推。
最终得到12345
这就是冒泡法,是计算机编程排序中最简单快捷的方法。
除此意外我还能写出许多排序方法,但是效率上都不如冒泡法
至于为什么叫冒泡法呢,你把这几个数字竖起来看
1
2
3
4
5
把最大的数字5看成最大的泡泡,浮到最上,然后4又浮上去,依此类推
得到
5
4
3
2
1
所以形象的称为冒泡法
——————————————————————————————————
以下是C语言中十个数的冒泡法排序的代码
#include《stdio.h》
#include《conio.h》
int main(void)
{
long arrary,
box=0L;
int i1=0,
i2=0;
for(i1=0;i1《9;i1++)
arrary[i1]=0;
printf(“输入数组元素:\n“);
for(i1=0;i1《=9;i1++)
{
printf(“%3d》“,i1+1);
scanf(“%d“,&arrary[i1]);
}
for(i1=0;i1《=9;i1++)
for(i2=0;i2《=9-i1;i2++)
{
if(arrary[i2]《arrary[i2+1])
{
box=arrary[i2+1];
arrary[i2+1]=arrary[i2];
arrary[i2]=box;
}
}
printf(“\n排序后为:\n“);
for(i1=0;i1《=9;i1++)
printf(“%3d》%d\n“,i1+1,arrary[i1]);
getch();
return 0;
}
什么是冒泡法[详细的讲下]
冒泡排序 冒泡排序: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
Procedure 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.dup
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)。
C语言简单冒泡法程序
1、打开Visual stdio软件,在空项目里新建一个c语言程序空文件:
2、弹出的窗口选择C++文件,将文件扩展名改为“.c”点击添加完成新建c文件,之后就可以编写程序了:
3、这里从数组头部开始,不断比较相邻的两个元素的大小,让较大的元素逐渐往后移动(交换两个元素的值),直到数组的末尾,经过一轮的比较,就可以找到最大的元素,并将它移动到最后一个位置,然后依次类推直到数组的最后一个数比较完,最后输出结果;-是什么意思
4、最后需要执行程序,按下crtl+F5弹出程序的执行结果,就可以看到排序后的结果了:
数学上的冒泡法是什么
冒
泡
法:
目的:按要求从大到小或从小到大排序。
基本思路:对尚未排序的各元素从头到尾依次依次比较相邻的两个元素是否逆序(与欲排顺序相反),若逆序就交换这两元素,经过第一轮比较排序后便可把最大(或最小)的元素排好,然后再用同样的方法把剩下的元素逐个进行比较,就得到了你所要的顺序。
【可以看出如果有N个元素,那么一共要进行n-1轮比较,第I轮要进行j=n-i次比较。】
(如:有5个元素,则要进行5-1轮比较。第3轮则要进行5-3次比较)
例如
利用冒泡法排序将7,4,3,12,8,1从小到大排序,则第三次的结果是_______?
解答:
一趟之后,12被排在最后一位
结果是4
3
7
8
1
12
两次之后,结果是
3
4
7
1
8
12
三次之后,结果是
3
4
1
7
8
12
又如
设原来的数组
2
5
3
1
我们现在要从小到大排序
第一轮开始比
2和5比不动
成
2
5
3
1
5和3比交换
成
2
3
5
1
5和1比交换
成
2
3
1
5
第二轮
2和3比不动
成
2
3
1
5
3和1比交换
成
2
1
3
5
第三轮
2和1比交换
成
1
2
3
5
这样排序就完成了
。因为是一轮一轮的比到所有的数,
就像冒泡泡一样,所以叫冒泡法
-c
什么是冒泡排序算法
冒泡排序算法:重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。-是什么意思
这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
扩展资料:
冒泡排序算法的原理如下:
1,比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2,对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3,针对所有的元素重复以上的步骤,除了最后一个。
4,持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
参考资料:百度百科---冒泡排序
冒泡法和选择排序
冒泡和快速排序的区别在于:冒泡算法,每次比较如果发现较小的元素在后面,就交换两个相邻的元素。将待排序的元素看作是竖着排列的“气泡“,较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个“气泡“序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即“轻“的元素在下面,就交换它们的位置。显然,处理一遍之后,“最轻“的元素就浮到了最高位置;处理二遍之后,“次轻“的元素就浮到了次高位置。在作第二遍处理时,由于最高位置上的元素已是“最轻“元素,所以不必检查。一般地,第i遍处理时,不必检查第i高位置以上的元素,因为经过前面i-1遍的处理,它们已正确地排好序。而选择排序算法的改进在于:先并不急于调换位置,先从A开始逐个检查,看哪个数最小就记下该数所在的位置P,等一躺扫描完毕,再把A[P]和A对调,这时A到A中最小的数据就换到了最前面的位置。
所以,选择排序每扫描一遍数组,只需要一次真正的交换,而冒泡可能需要很多次。比较的次数是一样的。
其实看你声明的变量的个数就知道了。选择的要比冒泡的多声明一个,用来存储最小(或最大的)元素的下标。而冒泡的比较后直接换。
-c
c语言 冒泡法是什么啊
冒泡法是排序的一种方法,冒泡法和冒泡排序实是一个定义.之所以叫冒泡法,即是像在水中的气泡一样,在一轮两数比较之后将最小(或最大的数字)排在一列数的左边(当然右边也行,总之是一边).然后排开这个数,经过N-2排开之后,整列数的大小就是按顺序来的.
-是什么意思
什麽是“冒泡法”
5
4
3
2
1
比如上面这5个数字我们把它按照由小到大的顺序排列,
从前往后相临两位比较大小,如果前一位比后一位大就把它俩
换位,5比4大就把5和4换位,得到45321
5又比3大
5和3换位
得到43521
依次类推最后得到
43215
这样就把最大的一个数字移到最后面了
然后不看5
,剩下4321
再用上面的方法把4移动到最后
得到
32145
在不看45
剩下321
把3移动到
最后,依此类推。
最终得到12345
这就是冒泡法,是计算机编程排序中最简单快捷的方法。
除此意外我还能写出许多排序方法,但是效率上都不如冒泡法
至于为什么叫冒泡法呢,你把这几个数字竖起来看
1
2
3
4
5
把最大的数字5看成最大的泡泡,浮到最上,然后4又浮上去,依此类推
得到
5
4
3
2
1
所以形象的称为冒泡法
-c
冒泡法和选择法的区别在哪里
冒泡法是相邻两个数比较,取大的再跟第三个比较,直到将最大的一个数沉底.
选择法是定义一个变量跟每一个数比较,比它小则不变,比它大就替换,直到把最大一个放在后面
冒泡法排序怎么弄
For i = 1 To 9 ’外层循环遍历数字
For j = 0 To 9 - i ’内层循环
If a(j) 》 a(j + 1) Then ’如果前面的数值大于后面的数值
b = a(j) ’将前面的数值存储到变量中
a(j) = a(j + 1) ’将后面的数值赋给前一个数值
a(j + 1) = b ’将变量的值再赋给后一个数值End IfNext jNext iFor i = 0 To 9 ’循环
Text1.Text = Text1.Text + CStr(a(i)) + “ “ ’将数组的结果输入到文本框中
If i = 4 Then Text1.Text = Text1.Text + Chr(13) + Chr(10) ’如果显示的个数超出4个,则换行Next iEnd SubPrivate Sub Command2_Click()
Dim i As Long, l ’定义变量
Text1.Text = ““ ’清空文本框中的内容
For i = 0 To 9 ’循环输入N: ’标签’弹出提示对话框输入数字
l = InputBox(“请输入排序的10个数字,这是第“ & CStr(i + 1) & “个“, “提示“, ““)
If IsNumeric(l) Then ’如果输入的是数字
a(i) = l ’赋给数组变量Else ’否则MsgBox “请输入数字“, vbOKOnly, “错误“ ’弹出提示对话框
GoTo N ’跳转到标签NEnd IfNext iEnd Sub 追问: 不是计算机的,呃… 回答: 啊...........那你要什么的啊 追问: 一组数比如25,3,5,6,36,用冒泡法排序需要几步,怎么弄? 回答: 哎,复制算了,其实自己去百度百科查就可以了啦冒泡排序,是指计算机的一种排序方法,它的时间复杂度为O(n^2),虽然不及堆排序、快速排序的O(nlogn,底数为2),但是有两个优点:1.“编程复杂度”很低,很容易写出代码;2.具有稳定性,这里的稳定性是指原序列中相同元素的相对顺序仍然保持到排序后的序列,而堆排序、快速排序均不具有稳定性。不过,一路、二路归并排序、不平衡二叉树排序的速度均比冒泡排序快,且具有稳定性,但速度不及堆排序、快速排序。冒泡排序是经过n-1趟子排序完成的,第i趟子排序从第1个数至第n-i个数,若第i个数比后一个数大(则升序,小则降序)则交换两数 冒泡排序(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。
-是什么意思