`
java从入门到放弃
  • 浏览: 44800 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

可能是屎上最容易懂的java冒泡排序

阅读更多

    冒泡排序是一门艺术,一般人刚刚接触到他的时候,根本无从下手。不少人(包括我)大学毕业了找工作,面试官问:你解释一下冒泡算法,直接就歇菜了。

    首先我们从字面上来看,冒泡,像泡泡一样冒出来,还是不懂啊。不看代码,我还真讲不通,我先把代码搞上来,咱们对着代码讲。

	public static void main(String[] args) {
		int[] array={4,3,2,1};
		int count=0;
		for(int i=0;i<array.length;i++){  //外循环
			for(int j=i+1;j<array.length;j++){  //内循环
				count++;
				if(array[i]>array[j]){
					int first=i;   	
					//下面三行代码:first位置的数和j位置的数换个位置
					int temp=array[first];  
					array[first]=array[j];
					array[j]=temp; 
					printArray(i,j,array); //打印数组
				}
			}
		}
		System.out.println("一共执行了:"+count+"次!!");
	}
	
	private static void printArray(int i,int j,int[] array){
		System.out.print("i="+i+",j="+j+",array=");
		for(int k:array){
			System.out.print(k+" ");
		}
		System.out.println();
	}

 

 

执行的结果:

i=0,j=1,array=3 4 2 1 
i=0,j=2,array=2 4 3 1 
i=0,j=3,array=1 4 3 2 
i=1,j=2,array=1 3 4 2 
i=1,j=3,array=1 2 4 3 
i=2,j=3,array=1 2 3 4 
一共执行了:6次!!

 

我草,这不一目了然了?我们看运行的结果:

1、看前面三行,i的值是0,j的值从1涨到3,我们成功得将数组变成了:1 4 3 2,也就是说,里边的for循环走一遍,就把最小的数给搞到前面啦!

2、再看第4、5行,i的值是1,j从2到3,我们的数组变成了:1 2 4 3,意思是:我们把第二小的数放到了第二位!

3、当执行到最后一次的时候,我们把第三小的数放到了第三位。

 

总结一下:冒泡算法就是2个for循环,对于外循环,第几次外循环就能把数组第几小的数放到第几位,所以一共要进行n-1次的外循环才能将数组排序。 对于内循环,每次都把当前的第一个数(array[i]) 和后面的每一个数(array[j]) 比较,谁小谁就放在第一个!

 

于是,我们得到的结论是:冒泡算法是这样的:包括2个循环,内循环将最小值放前面(内有交互值方法),外循环就是(for i=0;i<length;i++)

 

你们还有更好的解释吗?求留言赐教,谢谢大家····

 

 

 

 

0
3
分享到:
评论
1 楼 u148 2016-06-04  

相关推荐

    史上最清晰 - Java经典算法教程:冒泡排序

    在Java中实现冒泡排序,我们可以创建一个名为`BubbleSortTutorial`的类,其中包含一个`bubbleSort`方法用于执行排序,以及一个辅助方法`printArray`用于打印数组内容。在`bubbleSort`方法中,我们使用两层循环来实现...

    史上最强的java面试题 corejava javaWeb SSH框架

    Java是世界上最流行的编程语言之一,尤其在企业级应用开发领域占据主导地位。SSH框架(Struts、Spring、Hibernate)是Java Web开发中的三大神器,它们各自解决了不同的问题,共同构建了强大的应用程序架构。本篇文章...

    JAVA经典算法90题【含源码】-史上最全

    "JAVA经典算法90题【含源码】-史上最全"这个压缩包文件提供了一个宝贵的资源,涵盖了90个Java实现的经典算法问题,旨在帮助开发者提升算法思维和编程技巧。 1. **排序算法**:包括快速排序、归并排序、插入排序、...

    史上最强悍90道Java基础题附10题(含完整答案)

    ### 知识点总结 ...这些知识点覆盖了两种经典的排序算法(快速排序和冒泡排序)以及一种高效的查找算法(折半查找),是Java编程中非常重要的基础知识,掌握它们对于进一步学习高级数据结构和算法具有重要意义。

    JAVA基础编程练习题50题及经典算法90题【含源码及答案】-史上最全

    1. **排序算法**:冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等。 2. **查找算法**:线性查找、二分查找、哈希查找。 3. **图论问题**:最短路径问题(Dijkstra算法、Floyd算法)、最小生成树(Prim...

    Java Android史上最全工具类 算法

    本资源"Java Android史上最全工具类 算法"提供了一系列与Android开发相关的工具类和经典算法,覆盖了图片处理、字符串操作、系统信息获取、网络请求、IO操作、集合操作等多个领域。下面将对这些知识点进行详细介绍:...

    史上最全的各大公司的java面试题总结

    13. **算法与数据结构**:虽然不是Java特有的,但面试中常涉及,包括排序算法(冒泡、选择、插入、快速、归并等)、查找算法、图论问题等。 14. **JDK新特性**:随着Java版本的更新,如Java 8的Lambda表达式、...

    【史上最全】【后端】【面试】必背大全.pdf

    以及排序算法(冒泡、选择、插入、快速排序等)、搜索算法(线性搜索、二分搜索等)、动态规划、贪心算法、回溯算法、分治算法等常见算法的原理和应用。 **设计模式知识点** 设计模式部分可能包括了创建型模式(如...

    华为笔试题大全(史上最齐全

    冒泡排序算法的时间复杂度是O(n^2),适用于小规模数据排序,但对于大规模数据集效率较低。 #### 9. 浮点数与零值的比较 正确的比较方式应考虑到浮点数的精度问题,例如:`if (fabs(x) &gt; 0.000001)`。 #### 10. ...

    华为笔试题大全(史上最齐全)

    8. **冒泡排序的时间复杂度**:冒泡排序是一种简单的排序算法,其时间复杂度为O(n^2),其中n为排序数组的长度,无论在最坏情况还是平均情况下,其性能都相对较差。 9. **浮点数与零值的比较**:使用`if (x &gt; 0....

    Java从入门到精通教程全套

    - **主要内容**:涉及冒泡排序、选择排序、插入排序等基本排序算法,以及二分查找算法。 - **学习目标**:能够理解和实现这些算法,了解它们的时间复杂度和空间复杂度。 以上内容覆盖了Java编程的基础部分,从...

    c++ CSP-J练习题

    - 基数排序是一种关键字排序,利用数字的位数进行排序,不同于非关键字排序如快速排序、冒泡排序和选择排序。 此外,题目还涉及到字符串处理、内存管理、程序运行时间限制等知识点。通过这些练习,学生可以巩固和...

    2021-2022计算机二级等级考试试题及答案No.3663.docx

    - 冒泡排序的最坏情况比较次数为`n(n-1)/2`。 - 快速排序的最坏情况比较次数也为`n(n-1)/2`。 ### 6. C++ if-else 语句的使用 - **知识点**: - `if`语句可以嵌套多层。 - `else`子句中可以嵌套`if`语句。 - ...

    2021-2022计算机二级等级考试试题及答案No.12997.docx

    - 冒泡排序、简单选择排序和直接插入排序在最坏情况下的时间复杂度均为O(n²)。 - 堆排序在最坏情况下的时间复杂度为O(nlogn),因此比较次数较少。 - **正确答案**:D #### 11. 并发线程的概念 - **知识点**:多...

Global site tag (gtag.js) - Google Analytics