在java数据结构和算法(第二版),RObert Lafore著
  第一个冒泡算法,
  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;
  }
}
class BubbleSortApp
{
  public static void main(String[] args)
  {
  int maxSize =100;
  ArrayBub arr;
  arr = new ArrayBub(maxSize);
  arr.insert(67);
  arr.insert(89);
  arr.insert(90);
  arr.insert(77);
  arr.insert(99);
  arr.insert(66);
  arr.insert(44);
  
  arr.display();
  arr.bubbleSort();
  arr.display();
  }
}
上面的运行出来后,得到66 44 67 77 89 90 99,明显是错误的,我怀疑他少算了一步,上面的程序针对最小数不在末尾的数组,完全正确, 只要最小数在末尾就是错的,我想了半天,也不知道为什么,难道著名程序大师编的第二版也有错吗,请高手指教,上面冒泡排序关键代码如下
 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);