冒泡排序

原创 2015年11月19日 17:09:48
  1.     public class Test {  
          
            //待排数组  
            private static int[] data = {1, 10, 11, 23, 4, 2, 18, 47, 95, 23};  
              
            //增强for循环打印数组  
            private static void print(int[] data){  
                for(int i : data){  
                    System.out.print(i+",");  
                }  
            }  
              
            //冒泡排序的方法,一定会进行(n-1)+(n-2)+...+1=n(n-1)/2=(n^2/2-n/2)次比较,(不包含在for的条件中进行的比较)  
            //(实际准确的说,包含for循环内的比较的话,比较数为,2((n-1)+(n-2)+...+1)+n=n^2,无关大雅,时间复杂度都取决于n^2)  
            //在最坏的情况下会进行(n-1)+(n-2)+...+1=n(n-1)/2次交换,(这里即进行3次的赋值操作)。  
            //空间上,x占用了一个格子,即额外引用了一个空间来存储数据,这是个常数1。  
            //故时间复杂度O(n^2), 空间复杂度O(1)   
            private static int[] bubbleSort1(int[] data){  
                for(int i = 0;i < data.length;i++){  
                    for(int j = i+1;j < data.length;j++){  
                        //计算时所指的是下面的比较  
                        if(data[i] > data[j]){  
                            int x = data[i];  
                            data[i] = data[j];  
                            data[j] = x;  
                        }     
                    }  
                }  
                return data;  
            }  
            //这是我看到过的另外一种写法,其实思想结果是一样的。  
            //比较次数(n-1)+(n-2)+...+1=n(n-1)/2,时间复杂度同样是O(n^2)  
            private static int[] bubbleSort2(int[] data){  
                for(int i = 0;i < data.length-1;i++){  
                    for(int j = 0;j < data.length-1-i;j++){  
                        if(data[j] > data[j+1]){  
                            int x = data[j];  
                            data[j] = data[j+1];  
                            data[j+1] = x;  
                        }  
                    }  
                }  
                return data;  
            }  
            public static void main(String[] args){  
                print(bubbleSort1(data));  
            }  
        }  
版权声明:欢迎转载,但请注明出处

汇编实现排序——冒泡排序

冒泡排序算法的运作如下:(从后往前) 1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的...
  • u010429311
  • u010429311
  • 2016年06月21日 23:20
  • 8205

排序算法之冒泡排序的思想以及Java实现

1 基本思想 设排序表长为n,从后向前或者从前向后两两比较相邻元素的值,如果两者的相对次序不对(A[i-1] > A[i]),则交换它们,其结果是将最小的元素交换到待排序序列的第一个位置,我们称它...
  • whq19890827
  • whq19890827
  • 2016年08月14日 21:12
  • 1372

Java List集合冒泡法排序的两种实现

冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已...
  • u013751758
  • u013751758
  • 2014年11月10日 20:49
  • 2201

冒泡排序由浅入深详细分析图解

冒泡排序 * 相邻元素两两比较,大的往后放,第一次完毕后,最大值就出现在 * 最大索引处,同理,继续,即可得到一个排序好的数组 * * 规律: * 1、两两比较,大的往后放。 ...
  • starjuly
  • starjuly
  • 2016年12月25日 19:49
  • 3101

java将list集合冒泡排序

java将List集合进行冒泡排序。。。
  • xiaosheng_papa
  • xiaosheng_papa
  • 2015年01月05日 13:55
  • 4037

[排序算法]--冒泡排序的三种实现(Java)

冒泡排序是非常好理解的,以从小到大排序为例,每一轮排序就找出未排序序列中最大值放在最后。 设数组的长度为N: (1)比较前后相邻的二个数据,如果前面数据大于后面的数据,就将这二个数据交换。(2)这样...
  • u010853261
  • u010853261
  • 2017年02月06日 12:53
  • 3297

改进的冒泡排序算法

冒泡排序算法,是最基本的排序算法, 它属于交换排序。 冒泡排序过程 设想被排序的数组R[1..N]垂直竖立,将每个数据元素看作有重量的气泡,根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R,凡扫描...
  • tjunxin
  • tjunxin
  • 2013年03月23日 15:36
  • 25083

冒泡排序的优化及最好最差情况

最开始学习的时候并没有对其进行深入的思考,现在对其进行总结,冒泡排序的思想也就不需要赘述。 最开我们会将数列进行n-1趟排序,每趟又进行一个循环的冒泡,如果是升序,我们就会将相邻的两个元素进行比较...
  • qingqiulengya
  • qingqiulengya
  • 2016年06月05日 20:31
  • 2203

经典排序算法(1)——冒泡排序算法详解

冒泡排序(Bubble Sort)是一种典型的交换排序算法,通过交换数据元素的位置进行排序。 一、算法基本思想 (1)基本思想 冒泡排序的基本思想就是:从无序序列头部开始,进行两两比较,根据大...
  • guoweimelon
  • guoweimelon
  • 2016年03月16日 10:52
  • 17845

AS3冒泡排序算法

package { public class BubbleSort { public function BubbleSort() { var arr:Array = [2,...
  • cceevv
  • cceevv
  • 2014年03月26日 23:25
  • 2559
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:冒泡排序
举报原因:
原因补充:

(最多只允许输入30个字)