java 实现冒泡排序
冒泡排序(BubbleSort)的简单概述为:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到最大数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最大数。如此下去,直至最终完成排序。
由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。
//冒泡排序法
public class ArrayBub {
private long[] a;//ref a array a
private int nElems; //numbers of data items
//constructor
public ArrayBub(int max){
a = new long[max]; //create the array
nElems = 0; //no items yet
}
//put element into array
public void insert(long value){
a[nElems]=value; //insert it
nElems++; // increment size
}
//displays array contents
public void display(){
for(int j=0;j<nElems;j++){
System.out.print(a[j]+"\t");
}
System.out.println("");
}
//冒泡排序的核心---------------------------
public void bubbleSort(){
int out,in;
for(out=nElems-1;out>1;out--){//outer loop (backward)
for(in=0;in<out;in++){ //inner loop(forward)
if(a[in]>a[in+1]) //out of order?
swap(in, in+1); //swap them
}
}
}
private void swap(int one, int two) {
long temp = a[one];
a[one] = a[two];
a[two] = temp;
}
}
测试冒泡排序
public class BubbleSortApp {
/**
* @param args
* 测试冒泡排序
*/
public static void main(String[] args) {
int maxSize = 100;
ArrayBub arr;
arr = new ArrayBub(maxSize);
arr.insert(77);
arr.insert(99);
arr.insert(33);
arr.insert(55);
arr.insert(44);
arr.insert(66);
arr.insert(22);
arr.insert(17);
arr.insert(35);
arr.display();
arr.bubbleSort();
arr.display();
}
}
参考资料:Java数据结构和算法.(第二版).pdf