冒泡排序
2017-08-12 20:44
183 查看
冒泡排序算法如下:
1、比较相邻的元素,如果第一个比第二个大,则交换两个。
2、对每一个相邻元素做同样的工作,从开始第一对到结尾的最后一对。最后的元素是最大数
3、针对所有的元素重复以上步骤,除了最后一个。
4、持续每次对越来越少的元素重复上面的步骤,知道没有任何一对数字需要比较。
此以数组为例。
结果如下:
77 99
44 55 22
88 11
0 66 33
-----------我是分隔符-----------
比较次数:45
0 11 22
33 44
55 66 77
88 99
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
相关文章推荐
- 冒泡排序之三个整数排序
- PHP(冒泡,快速,选择,插入)排序
- 排序小试牛刀(类冒泡……)
- 冒泡和Arrays类提供的快速排序比较时间
- 冒泡求和排序do while
- 冒泡排序2
- 冒泡排序,选择排序
- 四种常用的排序(插入、选择、冒泡、希尔)
- 算法 排序算法--冒泡排序
- 冒泡/下沉排序
- JAVA 数组的排序方法冒泡、选择、快速、数组递增
- 排序 冒泡与选择
- 单链表排序--冒泡法
- OC 的冒泡排序问题
- 原来冒泡不是最牛的排序方法
- 冒泡排序本质:N个数,需要N-1趟,每趟需要比较N-i次(i是指第i趟)如10个数需要比较9+8+7+6+5+4+3+2+1=45次
- PLSQL实现排序(冒泡、选择、快速)
- 链表排序之冒泡法---简易篇
- 三大基本排序总结 (冒泡、选择、插入)