元素个数:n
外层循环:n-1>=out>=1,从最后一个元素a[n-1]到第二个元素a[1]
内层循环:0<=in<=out-1,out之前的所有元素
过程:每次循环将out位置置为[0,out]的最大值
冒泡排序算法简单,易理解,效率低
package datastructure.c3.sort.bubblesort;
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(" ");
}
/**
* 冒泡排序
* 效率为O(N^2)
*/
public void bubbleSort(){
int out,in;
for(out=nElems-1;out>0;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;
}
}
package datastructure.c3.sort.bubblesort;
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();
}
}