1——冒泡排序
冒泡排序: 主要思想是进行N趟排序,每一趟找出一个最大或最小的数放在末尾。N次之后,实现所有数据的排序;
主要步骤:
(1):第一个数据和第二个数据做比较,如果第一个数大于第二个数,则交换位置,否则不交换,然后在比较第二个数和第三个数据,根据大小决定是否交换顺序;知道最后一个数;
(2):第二趟排序;从第一个数到第n-1个数,步骤类似于(1);
(3):循环执行,知道所有数据排序完成;
算法时间复杂度 分析
比较次数为:N个数据,第一趟比较N-1次,第二趟比较n-2次,,,总共比较为n*(n-1)/2次。即约做了N2次比较,如果数据是随机的则交换次数约为N2/4,用大O表示法,则时间复杂度为N^2(两层循环的一般都是N^2);
代码:
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;
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;
}
}
//测速类
public class BubbleSortApp {
public static void main(String[] args) {
// TODO Auto-generated method stub
int maxSize=100;
ArrayBub arr;
arr=new ArrayBub(maxSize);
arr.insert(77);
arr.insert(99);
arr.insert(12);
arr.insert(96);
arr.insert(45);
arr.insert(93);
arr.insert(34);
arr.display();
arr.bubbleSort();
arr.display();
}
}

浙公网安备 33010602011771号