您的位置:首页 > 其它

冒泡排序

2017-08-12 20:44 183 查看
冒泡排序算法如下:

1、比较相邻的元素,如果第一个比第二个大,则交换两个。

2、对每一个相邻元素做同样的工作,从开始第一对到结尾的最后一对。最后的元素是最大数

3、针对所有的元素重复以上步骤,除了最后一个。

4、持续每次对越来越少的元素重复上面的步骤,知道没有任何一对数字需要比较。

此以数组为例。

/**
*冒泡排序
*/
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(){
int i ;
for( i=0;i<nElems;i++){
System.out.printf(a[i]+"\t");
}
System.out.printf("\n");
}

//冒泡排序
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);
}
}
}
System.out.printf("比较次数:"+nElems*(nElems-1)/2+"\n");
}
//交换元素位置
private void swap(int one,int two){
long temp = a[one];
a[one] = a[two];
a[two] = temp;
}

public static void main(String[] args){
int maxSize = 100;
ArrayBub 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(0);
arr.insert(66);
arr.insert(33);
arr.display();//未排序
System.out.printf("-----------我是分隔符-----------\n");
arr.bubbleSort();
arr.display();
}
}


结果如下:

77 99
44 55 22
88 11
0 66 33

-----------我是分隔符-----------

比较次数:45

0 11 22
33 44
55 66 77
88 99
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: