冒泡排序有三个记录值,其中的两个指向需要比较的两个对象,其中一个指向需要排序的数值的末尾值。
in,in+1,out
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;//out记录需要排序的数组的末尾值 for(out=nElems-1;out>1;out--) { //比较两个对象的大小(in和in+1) 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 Test { public static void main(String[] args) { int maxSize=100; ArrayBub arrayBub=new ArrayBub(maxSize); arrayBub.insert(77); arrayBub.insert(99); arrayBub.insert(44); arrayBub.insert(55); arrayBub.insert(22); arrayBub.insert(88); arrayBub.insert(11); arrayBub.insert(0); arrayBub.insert(66); arrayBub.insert(33); arrayBub.display(); arrayBub.bubbleSort(); arrayBub.display(); } }