Java冒泡排序算法

来源:互联网 发布:非关系型数据库 编辑:程序博客网 时间:2024/05/29 03:52

最近看了Java数据结构和算法想写点东西!根据书里面的代码然后加了一些自已的想法!


代码如下:

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 boolean find(long searchKey){
    int j;
      for(j = 0;j < nElems;j++){
        if(a[j] == searchKey){
          break;
        }
     }
       if(j == nElems){
       return false;
       }else{
        return true;
       }
       
    }
    

    public boolean delete(long value){
    int j;
        for(j = 0;j < nElems;j++){
        if(a[j] == value){
         break;
        }
    
    }
    if(j == nElems){
      return false;
    }else{
      for(int k = j;k < nElems;k++)
          a[k] = a[k + 1];
      nElems--;
      return true;
    
    }
    
    }


    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 = 0;out < nElems - 1;out++)
          for(in = nElems;in >= out;in--)

          if(a[in] < a[in + 1])
              swap(in,in + 1);
    
    }
    //从小到大冒泡排序输出

     public void bubbleSort2(){
     int out2,in2;
     for(out2 = nElems - 1;out2 >= 1;out2--)

         for(in2 = 0;in2 < out2;in2++)

            if(a[in2] > a[in2 + 1])
             swap(in2,in2 + 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){
  int maxSize = 100;

  ArrayBub arr;

  arr = new ArrayBub(maxSize);

  arr.insert(77);
  arr.insert(99);
  arr.insert(44);
  arr.insert(55);
  arr.insert(22);
  arr.insert(88);
  arr.insert(11);
  arr.insert(00);
  arr.insert(66);
  arr.insert(33);

  arr.display();

  arr.bubbleSort();

  arr.display();
 
  arr.bubbleSort2();

  arr.display();

  System.out.println("############################");

   int searchKey = 55;
   if(arr.find(searchKey)){
     System.out.println("Found " + searchKey);
   
   }else{
     System.out.println("Can't find " + searchKey);
   }
   arr.delete(00);
   arr.delete(99);
   arr.delete(55);

   arr.display();

   arr.bubbleSort();
   arr.display();

   arr.bubbleSort2();
   arr.display();
   System.out.println("############################");
   arr.insert(00);
   arr.insert(99);
   arr.insert(55);

   arr.display();

   arr.bubbleSort();
   arr.display();
   arr.bubbleSort2();
   arr.display();
 
  }

}

运行结果如下所示:


0 0