zoukankan      html  css  js  c++  java
  • 冒泡排序

    1、冒泡排序

      依次比较相邻的数据,将小数据放在前,大数据放在后;即第一趟先比较第1个和第2个数,大数在后,小数在前,再比较第2个数与第3个数,大数在后,小数在前,以此类推则将最大的数"滚动"到最后一个位置;第二趟则将次大的数滚动到倒数第二个位置......第n-1(n为无序数据的个数)趟即能完成排序。

    2、代码实现

     1 package com.wcy.sort;
     2 
     3 public class BubbleSortTest {
     4 
     5     /**
     6      * 方法一
     7      * @param arr
     8      * @return
     9      */
    10     public static int[] bubbleSort(int[] arr){
    11         int temp = 0;
    12         for (int i = 0; i < arr.length - 1; i++) {
    13             int flag = 1; // 检测排序结果是否结束
    14             for (int j = 0; j < arr.length-1-i; j++) {
    15                 if (arr[j] > arr[j+1]) {
    16                     temp = arr[j+1];
    17                     arr[j+1] = arr[j];
    18                     arr[j] = temp;
    19                     flag = 0;
    20                 }
    21             }
    22             System.out.print(""+(i+1)+"趟的排序结果为:");
    23             showArray(arr);
    24             if (flag == 1) {
    25                 break;
    26             }
    27         }
    28         
    29         return arr;
    30     }
    31     
    32     /**
    33      * 方法一
    34      * @param arr
    35      * @return
    36      */
    37     public static int[] bubbleSort2(int[] arr){
    38         int temp = 0;
    39         for (int i = 0; i < arr.length-1; i++) {
    40             int flag = 1; // 检测排序结果是否结束
    41             for (int j = arr.length-1; j > i; j--) {
    42                 if (arr[j] < arr[j-1]) {
    43                     temp = arr[j-1];
    44                     arr[j-1] = arr[j];
    45                     arr[j] = temp;
    46                     flag = 0;
    47                 }
    48             }
    49             System.out.print(""+(i+1)+"趟的排序结果为:");
    50             showArray(arr);
    51             if (flag == 1) {
    52                 break;
    53             }
    54         }
    55         
    56         return arr;
    57     }
    58     
    59     /**
    60      * 打印数组函数
    61      * @param arr 待打印的数组
    62      */
    63     public static void showArray(int[] arr){
    64         System.out.print("[");
    65         for (int i = 0; i < arr.length; i++) {
    66             if (i == arr.length-1) {
    67                 System.out.print(arr[i]);
    68             }else {
    69                 System.out.print(arr[i] + ",");
    70             }
    71         }
    72         System.out.println("]");
    73     }
    74     
    75     /**
    76      * 用户页面测试
    77      * @param args
    78      */
    79     public static void main(String[] args) {
    80         int[] arr = {36,25,48,12,25,65,43,57};
    81         int[] arrResult = bubbleSort2(arr);
    82         System.out.print("最终冒泡排序结果为:");
    83         showArray(arrResult);
    84     }
    85 }
  • 相关阅读:
    标签的讲解
    属性分类
    LeetCode 003. 无重复字符的最长子串 双指针
    Leetcode 136. 只出现一次的数字 异或性质
    Leetcode 231. 2的幂 数学
    LeetCode 21. 合并两个有序链表
    象棋博弈资源
    acwing 343. 排序 topsort floyd 传播闭包
    Leetcode 945 使数组唯一的最小增量 贪心
    Leetcode 785 判断二分图 BFS 二分染色
  • 原文地址:https://www.cnblogs.com/wangchaoyuan/p/5980405.html
Copyright © 2011-2022 走看看