三九宝宝网宝宝百科宝宝知识

谁能讲一下冒泡排序原理

03月01日 编辑 39baobao.com

[C语言实现以及冒泡排序]汉诺塔绝对是一个经典的算法题目,虽然当年也讲过,程序也不长,但是一直以来总觉得理解的不清楚,看程序也能明白什么意思,过一段时间程序忘了,想不起来的时候,就怎么都想不明白了,虽然...+阅读

冒泡排序(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。

举例说明冒泡排序法基本原理

原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,

这样一趟过去后,最大或最小的数字被交换到了最后一位,

然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子

例子为从小到大排序,

原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 |

第一趟排序(外循环)

第一次两两比较6 >2交换(内循环)

交换前状态| 6 | 2 | 4 | 1 | 5 | 9 |

交换后状态| 2 | 6 | 4 | 1 | 5 | 9 |

第二次两两比较,6 >4交换

交换前状态| 2 | 6 | 4 | 1 | 5 | 9 |

交换后状态| 2 | 4 | 6 | 1 | 5 | 9 |

第三次两两比较,6 >1交换

交换前状态| 2 | 4 | 6 | 1 | 5 | 9 |

交换后状态| 2 | 4 | 1 | 6 | 5 | 9 |

第四次两两比较,6 >5交换

交换前状态| 2 | 4 | 1 | 6 | 5 | 9 |

交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

第五次两两比较,6 交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |

交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

第二趟排序(外循环)

第一次两两比较2 交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |

交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

第二次两两比较,4 >1交换

交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |

交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

第三次两两比较,4 交换前状态| 2 | 1 | 4 | 5 | 6 | 9 |

交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

第四次两两比较,5 交换前状态| 2 | 1 | 4 | 5 | 6 | 9 |

交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

第三趟排序(外循环)

第一次两两比较2 >1交换

交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

第二次两两比较,2 交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

第三次两两比较,4 交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

第四趟排序(外循环)无交换

第五趟排序(外循环)无交换

排序完毕,输出最终结果1 2 4 5 6 9

JAVA冒泡排序原理

import java.util.Scanner; public class BubbleSort { // 排序方法(由大到小) public static void Sort(int arry[]){ for(int i=arry.length-1;i>0;i--) { for(int j=0;jarry[j]) //如果后面的大于前面的 则交换顺序 { int temp; //相当于装满油的桶,和装满水的桶,互换的时候,需要一个空的桶。temp现在就是那个空桶 temp=arry[i]; arry[i]=arry[j]; arry[j]=temp; } } } System.out.println("排序结果为:"); //打印排序结果 for(int i=0;i

冒泡排序法?

B

递增冒泡排序得原理是的是相邻2个元素比较如果为递减则交换

第一趟

16,9,4,25,15,2,13,18,17,5,8,24

9,16,4,25,15,2,13,18,17,5,8,24

9,4,16,25,15,2,13,18,17,5,8,24

9,4,16,25,15,2,13,18,17,5,8,24

9,4,16,15,25,2,13,18,17,5,8,24

9,4,16,15,2,25,13,18,17,5,8,24

9,4,16,15,2,13,25,18,17,5,8,24

9,4,16,15,2,13,18,25,17,5,8,24

9,4,16,15,2,13,18,17,25,5,8,24

9,4,16,15,2,13,18,17,5,25,8,24

9,4,16,15,2,13,18,17,5,8,25,24

9,4,16,15,2,13,18,17,5,8,24,25

第一趟排序结束,毫无疑问,25是最大的数,在程序中就不需要再次于25进行比较了

第二趟

9,4,16,15,2,13,18,17,5,8,24,25

4,9,16,15,2,13,18,17,5,8,24,25

4,9,16,15,2,13,18,17,5,8,24,25

4,9,15,16,2,13,18,17,5,8,24,25

4,9,15,2,16,13,18,17,5,8,24,25

4,9,15,2,13,16,18,17,5,8,24,25

4,9,15,2,13,16,18,17,5,8,24,25

4,9,15,2,13,16,17,18,5,8,24,25

4,9,15,2,13,16,17,5,18,8,24,25

4,9,15,2,13,16,17,5,8,18,24,25

最后结果

B (4,9,15,2,13,16,17,5,8,18,24,25)

以下为关联文档:

汉诺塔的C语言实现以及冒泡排序汉诺塔绝对是一个经典的算法题目,虽然当年也讲过,程序也不长,但是一直以来总觉得理解的不清楚,看程序也能明白什么意思,过一段时间程序忘了,想不起来的时候,就怎么都想不明白了,虽然...

c如何进行冒泡排序/**************************************************/ /* 函数功能:冒泡排序算法 */ /* 函数参数:结构类型table的指针变量tab */ /* 函数返回值:空 */ /* 文件名:bubbsort.cp...

冰箱压缩机的工作原理是?能讲详细一些吗冰箱压缩机的工作原理: 压缩式电冰箱是电机压缩式电冰箱的简称,它主要有以下三个构成部分:箱体、制冷系统与控制系统。而其中最关键的是制冷系统。 现在就来看看制冷系统是如何...

冒泡算法升序排序数组中随机生成的10个数public class MaoPiao { /** * 冒泡算法,升序排序数组中随机生成的10个数 */ public static void main(String[] args) { Random rd = new Random(); int a[] = new int[10];...

冒泡排序法将下面数组中的数进行排序并将排序后的结果输出到屏public class Test { public static void main(String args[]) { int[] arr={5,2,0,13,14}; Bubble bubble=new Bubble(); bubble.sort(arr); } } class Bubble { int temp;...

it java冒泡排序求详细解说此图为例循环顺序等等!第一次进入外层循环,i=0时,继续第一次进入内层循环,j=0。 如果a[0]>a[1],则把a[1]的值赋给temp临时变量,再与a[0]交换值,其实这几句代码的功能就是换位置,也就是“冒泡”,这样就会把...

冒泡排序法详解冒泡排序:BubbleSort 基本概念 冒泡排序的基本概念是:依次比较相邻的两个数,将大数放在前面,小数放在后面。即首先比较第1个和第2个数,将大数放前,小数放后。然后比较第2个数和第3...

用程序流程图表示快速排序冒泡排序什么意思?怎么写啊冒泡排序思想 :每次前后两个比较,前面大就交换这两个,一直到最后这是一趟,需要n趟(小到大排序) 例如:4 2 7 1 8 对这几个数冒泡排序 2 4 7 1 8 第一趟第一次交换2 4 2 4 7 1 8 第一...

vb快速排序算法不明白原理求教悬赏100dim i as long,j as long,aa()as string,t as string '假设数据存放在一个未知长度的数组aa里面 for i=0 to ubound(aa) for j=0 to ubound(aa)-i if aa(j)>aa(j+1) then t=...

推荐阅读
图文推荐