冒泡排序(Bubblesort)之Java实现

目录(?)[+]

冒泡排序算法介绍

冒泡排序比插入排序更简单,把最大的元素逐步推到最高位(当前须处理子数组的最高位)。依我的理解,冒泡排序是一个一层层筑顶的过程。顶筑好了,排序也就好了。冒泡排序的最坏运行时间是O(n2),效率和插入排序一样。

冒泡排序算法Java实现

如《插入排序(Insertsort)之Java实现》一样,先实现一个数组工具类。代码如下:

  1. publicclassArrayUtils{
  2. publicstaticvoidprintArray(int[]array){
  3. System.out.print("{");
  4. for(inti=0;i<array.length;i++){
  5. System.out.print(array[i]);
  6. if(i<array.length-1){
  7. System.out.print(",");
  8. }
  9. }
  10. System.out.println("}");
  11. }
  12. publicstaticvoidexchangeElements(int[]array,intindex1,intindex2){
  13. inttemp=array[index1];
  14. array[index1]=array[index2];
  15. array[index2]=temp;
  16. }
  17. }

逐步选取n-1到1(Java里面数组以0开始标记),分别作为第n,n-1,...,2层顶,第2层顶筑好了之后,只剩下一个比它小的元素,排序结束。每个顶的筑成都从位置0开始,依次和下一位置的元素比较,如果比下一位大,就交换它俩的位置。冒泡排序的Java实现以及测试代码如下:

  1. publicclassBubbleSort{
  2. publicstaticvoidmain(String[]args){
  3. int[]array={9,8,7,6,5,4,3,2,1,0,-1,-2,-3};
  4. System.out.println("Beforesort:");
  5. ArrayUtils.printArray(array);
  6. bubbleSort(array);
  7. System.out.println("Aftersort:");
  8. ArrayUtils.printArray(array);
  9. }
  10. publicstaticvoidbubbleSort(int[]array){
  11. if(array.length<=1){
  12. return;
  13. }
  14. intsize=array.length;
  15. for(inti=size-1;i>0;i--){
  16. for(intj=0;j<i;j++){
  17. if(array[j]>array[j+1]){
  18. ArrayUtils.exchangeElements(array,j,j+1);
  19. }
  20. }
  21. }
  22. }
  23. }

冒泡排序算法介绍

冒泡排序比插入排序更简单,把最大的元素逐步推到最高位(当前须处理子数组的最高位)。依我的理解,冒泡排序是一个一层层筑顶的过程。顶筑好了,排序也就好了。冒泡排序的最坏运行时间是O(n2),效率和插入排序一样。

冒泡排序算法Java实现

如《插入排序(Insertsort)之Java实现》一样,先实现一个数组工具类。代码如下:

  1. publicclassArrayUtils{
  2. publicstaticvoidprintArray(int[]array){
  3. System.out.print("{");
  4. for(inti=0;i<array.length;i++){
  5. System.out.print(array[i]);
  6. if(i<array.length-1){
  7. System.out.print(",");
  8. }
  9. }
  10. System.out.println("}");
  11. }
  12. publicstaticvoidexchangeElements(int[]array,intindex1,intindex2){
  13. inttemp=array[index1];
  14. array[index1]=array[index2];
  15. array[index2]=temp;
  16. }
  17. }

逐步选取n-1到1(Java里面数组以0开始标记),分别作为第n,n-1,...,2层顶,第2层顶筑好了之后,只剩下一个比它小的元素,排序结束。每个顶的筑成都从位置0开始,依次和下一位置的元素比较,如果比下一位大,就交换它俩的位置。冒泡排序的Java实现以及测试代码如下:

  1. publicclassBubbleSort{
  2. publicstaticvoidmain(String[]args){
  3. int[]array={9,8,7,6,5,4,3,2,1,0,-1,-2,-3};
  4. System.out.println("Beforesort:");
  5. ArrayUtils.printArray(array);
  6. bubbleSort(array);
  7. System.out.println("Aftersort:");
  8. ArrayUtils.printArray(array);
  9. }
  10. publicstaticvoidbubbleSort(int[]array){
  11. if(array.length<=1){
  12. return;
  13. }
  14. intsize=array.length;
  15. for(inti=size-1;i>0;i--){
  16. for(intj=0;j<i;j++){
  17. if(array[j]>array[j+1]){
  18. ArrayUtils.exchangeElements(array,j,j+1);
  19. }
  20. }
  21. }
  22. }
  23. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值