冒泡排序

原创 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));  
            }  
        }  
版权声明:欢迎转载,但请注明出处

相关文章推荐

mips 指令实现的冒泡排序

  • 2017年11月08日 13:11
  • 698B
  • 下载

冒泡排序法

  • 2016年07月31日 23:31
  • 5KB
  • 下载

Java中的冒泡排序算法实现

巴黎的告白气球 2017-01-12 11:49 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走...

冒泡排序法

  • 2016年10月22日 16:07
  • 574B
  • 下载

C Sharp冒泡排序

  • 2017年08月24日 19:19
  • 47KB
  • 下载

利用Python实现冒泡排序

今天说一个比较简单易懂的算法,相信大家在大学里面肯定都有接触过。在这里介绍排序算法的一种冒泡排序,对于初学Python的新人来说因该很容易理解。...

基于Python的冒泡排序代码

  • 2017年07月25日 21:21
  • 1KB
  • 下载

冒泡排序11

  • 2017年08月03日 20:55
  • 32.62MB
  • 下载

用PHP如何实现冒泡排序

1、首先我们必须弄清楚什么是冒泡排序,不理解冒泡排序的原理,我们就无法写出代码。 冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比...

冒泡排序的C++实现

  • 2017年03月05日 12:30
  • 2.47MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:冒泡排序
举报原因:
原因补充:

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