1——冒泡排序

冒泡排序: 主要思想是进行N趟排序,每一趟找出一个最大或最小的数放在末尾。N次之后,实现所有数据的排序;

  主要步骤:

              (1):第一个数据和第二个数据做比较,如果第一个数大于第二个数,则交换位置,否则不交换,然后在比较第二个数和第三个数据,根据大小决定是否交换顺序;知道最后一个数;

              (2):第二趟排序;从第一个数到第n-1个数,步骤类似于(1);

              (3):循环执行,知道所有数据排序完成;

算法时间复杂度 分析

         比较次数为:N个数据,第一趟比较N-1次,第二趟比较n-2次,,,总共比较为n*(n-1)/2次。即约做了N2次比较,如果数据是随机的则交换次数约为N2/4,用大O表示法,则时间复杂度为N^2(两层循环的一般都是N^2);

代码:

   public class ArrayBub {
      private long[] a;
      private int nElems;
      public ArrayBub(int max){
          a=new long[max];
          nElems=0;
      }
        public void insert(long value){
            a[nElems]=value;
            nElems++;
        }
        public void display(){
            for(int j=0;j<nElems;j++){
                System.out.print(a[j]+" ");
            }
            System.out.println("");
        }
        public void bubbleSort(){
            int out,in;
            for(out=nElems-1;out>1;out--){
                 for(in=0;in<out;in++){
                     if(a[in]>a[in+1]){
                         swap(in ,in+1);
                     }
                 }
            }
        }
        private void swap(int one ,int two){
             long temp=a[one];
             a[one]=a[two];
             a[two]=temp;
        }
        
}

//测速类

public class BubbleSortApp {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int maxSize=100;
        ArrayBub arr;
        arr=new ArrayBub(maxSize);
        arr.insert(77);
        arr.insert(99);
        arr.insert(12);
        arr.insert(96);
        arr.insert(45);
        arr.insert(93);
        arr.insert(34);
        arr.display();
        arr.bubbleSort();
        arr.display();
    }

}

posted @ 2016-09-28 22:32  一天到晚游泳的fish  阅读(149)  评论(0)    收藏  举报