zoukankan      html  css  js  c++  java
  • 用 Java 实现一个冒泡排序算法

            冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再大于第2个数),将小数放前,大数放后,一直比较到最小数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最小数。如此下去,直至最终完成排序。

           由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。 冒泡排序最好的时间复杂度为 O(n),总的平均时间复杂度为 O(n^2),是一种稳定排序算法。

           在编程实现中,一般用二重循环实现,外循环变量设为 i,内循环变量设为 j。外循环重复 n 次,内循环依次重复 n-1, n-2, ……, 1 次。每次进行比较的两个元素都是与内循环 j 有关的,它们可以分别用 a[j] 和 a [j+1] 标识,i 的值依次为 1, 2, ……, n,对于每一个 i,j 的值依次为 1, 2, ……, n-i,例如下面的代码:

      1 for (int i = 0; i < arrys.length; i++) {
      2     for(int j = 0;j < arrys.length-i-1; j++){
      3          if(arrys[j] > arrys[j+1]){ //判断当前数字与后面数字的大小
      4             //把大数放后边
      5          }
      6      }
      7 }

    以下是该题目的代码实现:

      1 package com.fhcq.bubblesort;
      2 
      3 public class BubbleSort {
      4 
      5   //主方法
      6   public static void main(String[] args) {
      7     int[] arr = { 3, 5, 7, 1, 8, 11, 9}; //定义数组 
      8     bubbleSort (arr); //开始排序
      9   }
     10 
     11   //排序方法
     12   public static void bubbleSort(int[] arrys) {
     13     //定义临时变量 temp
     14     int temp = 0;
     15     //用j为下标,遍历数组
     16     for (int j = 0; j < arrys.length; j++) {
     17       //对于每一个数组元素,从0到还未来排序的最大下标,总是把最大的数字放在后面
     18       for(int k = 0;k < arrys.length-j-1; k++){
     19         if(arrys[k] > arrys[k+1]){ //判断当前数字与后面数字的大小
     20           temp = arrys[k];
     21           arrys[k] = arrys[k+1];
     22           arrys[k+1] = temp; //用temp变量进行换值
     23         }
     24       }
     25    }
     26     bubblePrint(arrys); //打印
     27   }
     28   //打印方法
     29   public static void bubblePrint(int[] before){
     30     for(int i = 0;i < before.length; i++){ //遍历
     31       System.out.print(before[i] + ""); //打印,以空格隔开
     32     }
     33     System.out.println();//换行
     34   }
     35 }
  • 相关阅读:
    165. Compare Version Numbers
    163. Missing Ranges
    162. Find Peak Element
    161. One Edit Distance
    156. Binary Tree Upside Down
    工欲善其事-Eclipse设置
    2016年1月15日面试某互联网公司总结(一)
    以前用SQL实现的机构职能树,再看看
    Sublime3学习笔记
    Android之EACCES (Permission denied)与Permission denied异常探密
  • 原文地址:https://www.cnblogs.com/justlove/p/6984800.html
Copyright © 2011-2022 走看看