用 Java 实现一个冒泡排序算法

冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再大于第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 }
时间: 2024-10-25 15:56:12

用 Java 实现一个冒泡排序算法的相关文章

Java版双向冒泡排序算法

冒泡排序算法是一种较为简单的并且稳定的排序算法,该算法的时间复杂度最好为O(n),最差时为O(n^2),需要的空间复杂度为O(1). 这里的算法稳定性是指 经过排序后,各元素仍然能保持它们在排序之前的相对次序,就称该算法是稳定的,反之,则为不稳定的. 例如,一组数排序前是a1,a2,a3,a4,a5,其中a2=a4,经过某种排序后a1,a2,a4,a3,a5,则说明这种排序是稳定的,因为a2排序前后都在a4前面:若排序的结果是a1,a4,a2,a3,a5,则该排序就不是稳定的了.------摘自

Java编写一个路由算法,并txt输入输出

路由算法:1-9均代表主机名称 1. 输入: 图3拓扑的输入文件为input.txt,本算法为双向线,来回只需输入一个即可 Input.txt: leftnodeID,rightnodeID,bandwidth 1,3,100 1,4,100 2,3,100 2,4,100 3,4,100 3,5,100 3,6,100 4,5,100 4,6,100 5,6,100 5,7,100 5,8,100 6,7,100 6,8,100 ; srcNodeID,dstNodeID,bandwidth

用 Java 实现一个快速排序算法

       快速排序是排序算法中效率最高的一种,它是利用递归的原理,把数组无限制的分成两个部分,直到所有数据都排好序为止. 快速排序是对冒泡排序的一种改进.它的基本思想是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列. 如果要排序的数组是 A[1]--A[N-1],首先任意选取一个数据(通常选用第一个数据)作为中间数据,然后将所有比它小的数都放

用 Java 实现一个插入排序算法

有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法:插入排序法.插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的.个数加一的有序数据搜索,算法适用于少量数据的排序. 插入排序算法把要排序的数组分成两部分:第一部分包含了这个数组除了最后一位的所有元素,而第二部分就只包含这一个元素(即待插入元素).在第一部分排序后,再将最后这个元素插入到第一部分中的正确位置. 说明:这里的最后一位,也可以

Java中的经典算法之冒泡排序(Bubble Sort)

Java中的经典算法之冒泡排序(Bubble Sort) 原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后.重复第一趟步骤,直至全部排序完成. 举例说明:要排序数组:int[] arr={6,3,8,2,9,1}; 第一趟排序: 第一次排序:6和3比较,6大于3,交换位置:  

java:快速排序算法与冒泡排序算法

 Java:快速排序算法与冒泡算法 首先看下,冒泡排序算法与快速排序算法的效率: 如下的是main方法: public static void main(String[] args) { //快速排序算法测试 int[] qArray = new int[100000]; for (int i = 0; i < 100000; i++){ qArray[i] = (int) (Math.random() * 100000); } long beforeQ = System.currentTi

一个名声不好的排序算法(二)——冒泡排序算法

转载请注明出处,谢谢! 冒泡排序算法思想: 自下而上(或上而下)扫描记录序列,相邻的两条记录Ri与Ri-1(或Ri+1)如果是逆序,则交换位置. 交换排序 冒泡排序 快速排序 算法说明 一个名声不太好的算法 排序是稳定的 ArrayList实现: import java.util.ArrayList; import java.util.Random; public class Bubble { public static void sort(ArrayList<Integer> al) { i

Java中数组的几个常用算法:插入算法,删除算法,冒泡排序算法

前言: 在Java中我们常常会用数组,提到数组就不得不介绍数组中常用到的几个算法. 有插入算法,删除算法,冒泡排序算法等. 在学习这几个数组的算法前,我们先来了解一下关于数组一些基本知识. 数组的基本知识: 数组的定义:数组(Array)是相同数据类型的数据的有序集合. 数组是引用数据类型. 数组的三个特点: [1]数组长度是确定.数组一旦申请完空间,长度不能发生变化,用length属性访问. [2]数组的元素都是同一数据类型. [3]数组是有序的 .每个元素通过下标/索引标记,索引从0开始.

java实现冒泡排序算法

冒泡排序算法原理: 比较相邻的元素.如果第一个比第二个大,就交换他们两个, 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对, 针对所有的元素重复以上的步骤,除了最后一个, 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较, 创建方法: 1 //排序方法 2 public void bubble(int[] arr){ 3 //n个数需要n-1趟排序 4 for(int i=0;i<arr.length-1;i++){ 5 //每趟排序比较的次数,减去已经排序过得元