本文共 1212 字,大约阅读时间需要 4 分钟。
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端,故名。
package com.mylearn.algorithm.sort; import org.apache.commons.lang.xwork.StringUtils; /** * Created by IntelliJ IDEA. * User: yingkuohao * Date: 13-9-9 * Time: 上午11:19 * CopyRight:360buy * Descrption: 冒泡排序,循环比较,循环一次,找到一个最大的沉底,时间复杂度n*n * To change this template use File | Settings | File Templates. */ public class BubboSort { public static void main(String args[]) { Integer[] integers = new Integer[]{12, 15, 9, 24, 6, 31}; BubboSort bubboSort = new BubboSort(); System.out.println("初始:" + StringUtils.join(integers, ",")); bubboSort.execute(integers); System.out.println("结果:" + StringUtils.join(integers, ",")); } /** * 冒泡排序 * @param objects */ public void execute(Integer[] objects) { for (int i = objects.length-1 ; i > 0; i--) { //注意i的范围,最大为长度-1,否则下边的j+1会溢出 for (int j = 0; j < i; j++) { //循环比较,每轮找到一个最大值直至沉底。 if (objects[j] > objects[j + 1]) { //如果j>j=1,则交换 swap(objects,j,j+1); } } } } /** * 交换 * @param integers * @param i * @param j */ private void swap(Integer[] integers, Integer i,Integer j) { Integer tmp = integers[i]; integers[i] = integers[j]; integers[j] = tmp; } } |
转载地址:http://zzrrb.baihongyu.com/