冒泡排序

来源:互联网 发布:网络神曲2014 编辑:程序博客网 时间:2024/06/05 20:47
package com.suanfa;import java.util.Arrays;public class 冒泡 {        public static void main(String[] args){            int arr[] =new int[10];            for(int i=0;i<10;i++){                arr[i]=(int)(i*10*Math.random());            }            System.out.println(arr.toString());            System.out.println(Arrays.toString(arr));            for(int j=0;j<arr.length-1;j++){                for(int k=0;k<arr.length-j-1;k++){                    if(arr[k]<arr[k+1]){                        int temp=0;                        temp=arr[k];                        arr[k]=arr[k+1];                        arr[k+1]=temp;                    }                }            }            System.out.println(arr.toString());            System.out.println(Arrays.toString(arr));        }}

[I@6d06d69c
[0, 1, 17, 11, 21, 47, 56, 41, 11, 89]
[I@6d06d69c
[89, 56, 47, 41, 21, 17, 11, 11, 1, 0]

 关于临界值:i从0开始,i<a.length-1,因为有10个数,到最后最大的数已经在最下面了,所以最后一次可以忽略不用比较。复杂度:10个数的话,第一次9次比较,第二次8次,最后1次,比较总数9+8+......+1.如果N个数据,那比较就是总数M=N*(N-1)/2,交换次数大概为比较的一半,N*(N-1)/4,最坏的时候和比较次数一样。去掉常数,时间复杂度O(N^2)。
原创粉丝点击