黑马程序员技术交流社区

标题: JAVA排序之——冒泡排序算法 [打印本页]

作者: 飘影    时间: 2015-6-25 19:22
标题: JAVA排序之——冒泡排序算法

基本思想:

在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

冒泡排序的示例:

算法的实现:

  1.         for (int i = 0; i < arr.length-1; i++) {
  2.             for (int j = 0; j < arr.length-i-1; j++) {
  3.                 if (arr[j]<arr[j+1]) {
  4.                     int temp=arr[j];
  5.                     arr[j]=arr[j+1];
  6.                     arr[j+1]=temp;
  7.                 }
  8.             }
  9.         }
复制代码



作者: heima591046495    时间: 2015-6-25 19:37
这么强..赞一个!
作者: keto    时间: 2015-6-25 19:47
学习了。。谢谢分享。。。
作者: yangtingdong    时间: 2015-6-25 20:20
得好好学习,把基础学扎实
作者: zhand    时间: 2015-6-25 20:51
终于找到这帖子里啦
作者: 夜空中最亮的星    时间: 2015-6-25 21:04
讲解的好详细,谢谢!
作者: Especially丶    时间: 2015-6-25 21:16
感觉很腻害  吼吼!!
作者: bingyu    时间: 2015-6-25 21:27
其实冒泡排序就是内循环 自己和自己+1做比较,选择排序就是内循环和外循环相比
作者: 贾森    时间: 2015-6-25 21:28
挺不错的
作者: 十五号的人生    时间: 2015-6-25 21:33
学习了      
作者: 含笑    时间: 2015-6-25 22:54
冒泡排序法是最高效的排序方法吗

作者: a1224577182    时间: 2015-6-26 00:17
学习了!!
作者: 爱李萝卜    时间: 2015-6-26 12:05
每看到一次都复习一下
作者: Happe_Sun    时间: 2015-6-26 14:54
学习学习
作者: 我是隔壁老王呀    时间: 2015-6-26 16:20
本帖最后由 我是隔壁老王呀 于 2015-6-26 16:36 编辑
含笑 发表于 2015-6-25 22:54
冒泡排序法是最高效的排序方法吗

不是。
    冒泡排序法,需要每次从开始比较到最后一个元素,所需时间为从n(开始有序)到(n+(n-1)+(n-2)+...+1 )(开始逆序)之间,所需时间复杂度平均为为o(n*n),而快速排序、堆排序、归并排序以及基数排序,这些复杂排序方法的时间效率都比冒泡排序法要高。排序算法没有谁的效率最高一说,只能说结合实际项目中数据量的大小,以及数据的空间复杂度,可以选择一种或者几种排序算法搭配,达到效率最高。
     从平均时间性能上,快速排序最佳,所需时间最省,但是快速排序在最坏情况下的时间性能还不如堆排序和归并排序。从排序方法的稳定性上,基数排序是稳定的内部排序算法,还有一些简单排序算法也是稳定的,如插入排序,选择排序,冒泡排序等。


作者: 池中月    时间: 2015-6-26 16:41
算法这东西,一定要先明白它的分析过程,这样才能根据需求做出相应的东西;如果只是硬背的话,条件以改变你就抓瞎了。
作者: 含笑    时间: 2015-6-26 21:43
我是隔壁老王呀 发表于 2015-6-26 16:20
不是。
    冒泡排序法,需要每次从开始比较到最后一个元素,所需时间为从n(开始有序)到(n+(n-1)+(n-2) ...

谢谢!你的解答真详细
作者: 青皮核桃    时间: 2015-6-26 22:13
观摩观摩,学习学习




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2