关闭

数组-冒泡排序法

标签: 冒泡排序数组java
293人阅读 评论(0) 收藏 举报
分类:

冒泡排序法

原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,

这样一趟过去后,最大(或最小)的数字被交换到了最后一位,

然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似。

例子为从小到大排序,最大的数字会排到最后。

原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 |

第一趟排序(外循环)

第一次两两比较6 > 2交换(内循环)

交换前状态| 6 | 2 | 4 | 1 | 5 | 9 |

交换后状态| 2 | 6 | 4 | 1 | 5 | 9 |

第二次两两比较,6 > 4交换

交换前状态| 2 | 6 | 4 | 1 | 5 | 9 |

交换后状态| 2 | 4 | 6 | 1 | 5 | 9 |

第三次两两比较,6 > 1交换

交换前状态| 2 | 4 | 6 | 1 | 5 | 9 |

交换后状态| 2 | 4 | 1 | 6 | 5 | 9 |

第四次两两比较,6 > 5交换

交换前状态| 2 | 4 | 1 | 6 | 5 | 9 |

交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

第五次两两比较,6 < 9不交换

交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |

交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

第二趟排序(外循环)(注意9已经排到最后,因此不用再排序)

第一次两两比较2 < 4不交换

交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |

交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

第二次两两比较,4 > 1交换

交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |
交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

第三次两两比较,4 < 5不交换

交换前状态| 2 | 1 | 4 | 5 | 6 | 9 |
交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

第四次两两比较,5 < 6不交换

交换前状态| 2 | 1 | 4 | 5 | 6 | 9 |

交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

第三趟排序(外循环)(此时6和9都已经排到最后)

第一次两两比较2 > 1交换

交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

第二次两两比较,2 < 4不交换

交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |
交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

第三次两两比较,4 < 5不交换

交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |
交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

第四趟排序(外循环)无交换

第五趟排序(外循环)无交换

排序完毕,输出最终结果1 2 4 5 6 9

代码如下,供参考:

import java.util.Arrays;
//冒泡法排序
public class Arrays {
    public static void main(String[] args) {
    int[] array2 = { 3, 6, 9, 2, 5, 7 };

        //输出数组数据,作为对照
        for (int i = 0; i < array2.length; i++) {
            System.out.print(array2[i] + "\t");
        }

        //冒泡法排序
        for (int i = 0; i < array2.length; i++) {
            for (int j = 0; j < array2.length - i-1; j++) {
                int temp = 0;
                if (array2[j] > array2[j + 1]) {
                    temp = array2[j];
                    array2[j] = array2[j + 1];
                    array2[j + 1] = temp;
                }
            }
        }
        //输出排序后的数组
        System.out.println("冒泡排序后:");
        for (int i = 0; i < array2.length; i++) {
            System.out.print(array2[i] + "\t");
        }
    }
}

冒泡排序动画演示
冒泡排序动画演示

0
0
查看评论

JS数组的冒泡排序法

day5.5                                /* ...
  • CharlesK6
  • CharlesK6
  • 2017-04-09 21:38
  • 628

java语言编写的数组冒泡排序法

好久不用这些基本的算法了,都有点忘记了,今天复习一下。冒泡排序法是通过循环替换的方式,将数组中的值按照升序或者降序进行排列,这里的示例是按照降序的顺序进行排列。 public class BubbleSort {   public static void main(String[] a...
  • pmt1982
  • pmt1982
  • 2017-02-13 22:09
  • 706

JAVA 冒泡排序法代码

 public class A...{      public static void sort(String arg)...{   ...
  • hanpoyangtitan
  • hanpoyangtitan
  • 2008-01-17 14:52
  • 7315

数组冒泡排序原理

此篇以该数组为例 var array = [8,7,9,2,3,5,6,1];数组冒泡循环原理:相邻的两位数做比较,1和2比较 2和3比较 3和4比较 4和5比较,这样依次比较,如果前面的数小于后面的数,不做操作,如果前面的数大于后面的数则调换两个数字的位置,,列1>2 则数字顺序为2 1(注...
  • JSCTO
  • JSCTO
  • 2016-04-28 13:07
  • 3176

用java写一个对数组进行冒泡排序法

用java写一个对数组进行冒泡排序法
  • xiaochenxiaoren
  • xiaochenxiaoren
  • 2017-03-13 13:04
  • 2371

java数组中数字从小到大排序——冒泡排序法

定义一个int 类型的数组,并将其中的数从小到大的排列。 思路:从数组中拿出两个数来进行比较并保留最小的值来和数组中的其他值进行比较,得到最小值,并把他放到第一位(i 循环一次,j 进行了一次所有值的比对)            第一个...
  • eclipse_yin
  • eclipse_yin
  • 2016-04-06 20:25
  • 9707

利用冒泡排序法,对任意数组进行排序;

利用冒泡排序法,对任意数组进行排序;define _CRT_SECURE_NO_WARNINGSinclude include include
  • Y1730008223CONG
  • Y1730008223CONG
  • 2016-10-25 20:32
  • 390

C语言:冒泡排序算法对一个数组进行冒泡排序

#include #include #include #define NUMBER 10 //NUMBER为数组的大小 void bubbleSort(int [],int); void display(int [],int); int main() { int num[NUMBER]; ...
  • fwb330198372
  • fwb330198372
  • 2011-11-16 17:01
  • 5548

C语言之数组冒泡排序方法(学习之路)

#include #define LEN  8 int main() {   int  s[LEN],  i,  j,  k;   int flag;   for(i=0;i  ...
  • Super_Big_Fish
  • Super_Big_Fish
  • 2016-04-08 16:11
  • 1268

数组之冒泡排序法--从小到大

这个仍然是别人的例子,我加了很多注释。希望以后自己能独立编写一些好的程序。<?php /* * $return array * @param array $arr 需要冒泡的数组 * @param int $len 需要冒泡的数组的长度 * @par...
  • lamp113
  • lamp113
  • 2015-11-10 12:41
  • 275
    个人资料
    • 访问:14276次
    • 积分:328
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:11篇
    • 译文:0篇
    • 评论:0条