基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
在一般情况下,人们写出的冒泡排序算法是下面这种,但这种并不是正宗的冒泡排序
public int[] bubbleSort1(int[] bubbleSortArray){
int temp = 0;
for(int i = 0; i < bubbleSortArray.length-1; i++){
for(int j = 0; j < i; j++){
if(bubbleSortArray[j] < bubbleSortArray[i]){
temp = bubbleSortArray[j];
bubbleSortArray[j] = bubbleSortArray[i];
bubbleSortArray[i] = temp;
}
}
}
return bubbleSortArray;
}
以下才是正确的冒泡排序:
// BubbleSort
public int[] bubbleSort2(int[] bubbleSortArray){
int temp = 0;
for(int i = 0; i<bubbleSortArray.length-1; i++){
for(int j = 0; j < bubbleSortArray.length-1-i; j++){
if(bubbleSortArray[j] > bubbleSortArray[j+1]){
temp = bubbleSortArray[j];
bubbleSortArray[j] = bubbleSortArray[j+1];
bubbleSortArray[j+1] = temp;
}
}
}
return bubbleSortArray;
}
上面的冒泡排序还有优化的空间,在内层循环已经有序时,无需再循环下去了
public int[] bubbleSort3(int[] bubbleSortArray){
int temp = 0;
boolean needNextPass = true;
for(int i = 0; i<bubbleSortArray.length-1 && needNextPass; i++){
needNextPass = false;
for(int j = 0; j < bubbleSortArray.length-1-i; j++){
if(bubbleSortArray[j] > bubbleSortArray[j+1]){
temp = bubbleSortArray[j];
bubbleSortArray[j] = bubbleSortArray[j+1];
bubbleSortArray[j+1] = temp;
needNextPass = true;
}
}
}
return bubbleSortArray;
}
分享到:
相关推荐
该 ppt 为课程讲义,讲解冒泡排序算法原理,及用一个简单实例进行具体分析,还有冒泡排序算法原理的总结等。
试通过随机数据比较快速排序、起泡排序各算法的关键字比较次数和关键字移动次数。 (1)待排序表的表长不小于100;其中的数据要用伪随机数产生程序产生;... (3)对冒泡排序应指出进行了多少趟。
冒泡排序及其改进算法的分析与比较,曾希君,,冒泡排序算法是大家最为熟悉的排序算法之一,传统的冒泡排序算法过程很简单,并广泛应用于现在的教学及科研中,传统冒泡排序算法
冒泡排序算法详细分析那还等hi实地阿基hihi大UI一及对阿迪年hiue一群
选择排序算法、冒泡排序算法和插入排序算法的时间复杂度为O(n2),写法简单,逻辑易懂,但算力性价比不高,不适用于数据量较大时使用。 合并排序算法和快速排序算法采用了采用分治法、递归的方法,将时间复杂度降为...
冒泡排序的算法分析与改进.txt 冒泡排序的算法分析与改进.txt
用C编写的冒泡排序算法:#include void main() { int i=0,j=0,t; int a[10]; for(i=0;i;i++) scanf("%d",&a[i]); for(i=0;i;i++) for(j=0;j;j++) if(a[j]>a[j+1]) {t=a[j]; a[j]=a[j+1]; a[j+1]=t;} for...
C语言中冒泡排序算法的教学设计与分析.pdf
优化的冒泡 排序算法… 几种冒泡排序算法的比较分析 时间复杂度…
一种双向冒泡排序算法的C语言实现及其效率分析.pdf
1.冒泡排序的原理:每次都从第一个元素开始(索引0),向后两两比较,只要后面的比前面的大,就交换(从大到小) 2.通过画图分析,5个数字排4趟,n数字排n-1趟,而外层的for循环代表的是循环的趟数,所以外层循环的结束条件是...
本文件包含冒泡排序的基本思路,代码实现,时间复杂度的分析。对数据结构与算法中冒泡排序算法的实现,附件以python语言实现。
冒泡排序的分析改进算法,杨义磊,,排序算法对于计算机信息处理很重要 ,一个好的排序不仅可以使信息查找的效率提高 ,而且还直接影响着计算机的工作效率。目前排序领��
采用Python这一简洁易用的编程语言,从基础到进阶,逐步讲解了冒泡排序算法的分析、讲解和代码,以及冒泡排序算法的优化和扩展等方面。本资源适合算法教学和学习的教师和学生使用,帮助他们通过视频和代码来观看和...
算法设计与分析-排序算法c++源代码 仅做参考,copy冲查重塔峰 选择排序 冒泡排序 插入排序 合并排序 快速排序算法原理及代码实现 不同排序算法时间效率的经验分析方法 验证理论分析与经验分析的一致性 void Init_...
算法设计与分析-排序算法性能分析大礼包 包括题目要求pdf,报告文档,c++源代码,pre ppt 选择排序 冒泡排序 插入排序 合并排序 快速排序算法原理及代码实现 不同排序算法时间效率的经验分析方法 验证理论分析与经验...
用java对常用排序算法进行分析与实现.包含: 插入排序 直接插入排序、希尔排序 • 选择排序 简单选择排序、堆排序 • 交换排序 冒泡排序、快速排序 • 归并排序 • 基数排序
常用排序算法总结,包括插入排序(InsertionSort),冒泡排序(BubbleSort),选择排序(SelectionSort),快速排序(QuickSort), * 二路归并排序(MergeSort),堆排序(HeapSort)。有每一种排序算法的复杂度分析以及实现...
C语言排序中的各种方法(冒泡、插入法、选择排序等)算法分析
1、通过修改程序,实现程序在要求的数据量下求出以下六种内部排序算法的移动次数和比较次数:直接插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序。 2、输入的数据量分别按照正序、逆序、随机顺序的不同...