文档章节

冒泡排序

WillyLiu
 WillyLiu
发布于 2013/10/06 21:57
字数 585
阅读 141
收藏 1

数据结构对于一个程序员来说是最基本的基础。要想写出漂亮的代码那么数据结构是必须要关的,作为一名程序员如果不了解数据结构,那么你注定会是一辈子的低级码农。我先从基本的排序开始介绍一系列数据结构和基本算法。
冒泡排序
冒泡排序原理
1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
冒泡排序图示

代码:MaoPaoSort.java

package com.yunju.maopao;

import java.util.Arrays;

import com.yunju.util.ArrayUtil;
import com.yunju.util.GenericDataUtil;
import com.yunju.util.SwapUtil;

public class MaoPaoSort {

	public static void main(String[] args) {
		int[] list = GenericDataUtil.genericData(100000);
		// ArrayUtil.printArray(list);
		long start = System.currentTimeMillis();
		maoPaoSort(list, list.length);
		long end = System.currentTimeMillis();
		// ArrayUtil.printArray(list);
		System.out.println("\n冒泡排序花费时间:" + (end - start));

		int[] list1 = GenericDataUtil.genericData(100000);
		long start1 = System.currentTimeMillis();
		Arrays.sort(list1);
		long end1 = System.currentTimeMillis();
		System.out.println("快速排序花费时间:" + (end1 - start1));
	}

	// 对数据进行冒泡排序
	public static void maoPaoSort(int[] list, int length) {
		for (int i = 0; i < length - 1; i++) {
			for (int j = length - 1; j > i; j--) {
				if (list[j] > list[i]) {
					SwapUtil.swap(list, j, i);
				}
			}
		}
	}
}

工具类代码:GenericDataUtil.java(生成数据)
package com.yunju.util;

public class GenericDataUtil {

	/**
	 * 生成随机的整数
	 * @param number
	 * @return
	 */
	public static int[] genericData(int number,int random) {
		int[] list=new int[number];
		for(int i=0;i<number;i++) {
		list[i] = (int)Math.round(Math.random()*random);
		}
		return list;
	}
	
	public static int[] genericData(int number) {
		return genericData(number, 100000);
	}
	
}
工具类代码:SwapUtil.java(交换数据)
package com.yunju.util;

public class SwapUtil {
	/**
	 * 实现数据交换
	 * @param i
	 * @param j
	 */
	public static void swap(int[] list, int i, int j) {
		int temp;
		temp=list[j];
		list[j]=list[i];
		list[i]=temp;
	} 
	/**
	 * 将其交换为升序的正向排列的数组
	 * @param list
	 * @param i
	 * @param j
	 * @param k
	 */
	public static void swap3(int[] list, int i, int j,int k) {
		if(list[i]>list[j])
		swap(list, i, j);
		if(list[i]>list[k])
		swap(list, i, k);
		if(list[j]>list[k])
		swap(list, k, j);
	} 
}
工具类代码:ArrayUtil.java(打印数据)
package com.yunju.util;

public class ArrayUtil {
      public static void printArray(int[] array) {
    	  System.out.println();
    	  for (int i = 0; i < array.length; i++) {
			System.out.print(+array[i]+",");
		}
      }
}
冒泡排序时间复杂度为:O(n^2)效率是很低的
执行结果:







© 著作权归作者所有

共有 人打赏支持
WillyLiu
粉丝 2
博文 19
码字总数 8781
作品 0
成都
程序员
私信 提问
排序算法篇_冒泡排序法

image   冒泡排序法(Bubble Sort)是所有排序算法中最简单、最基本的一种。冒泡排序法的思路就是交换排序,通过相邻数据的交换来达到排序目的。 冒泡排序算法 冒泡排序算法通过多次比较和...

一笑小先生
01/28
0
0
iOS冒泡排序

冒泡排序算法顾名思义,经过每一次排序算法之后,最大的泡泡(数)会飘到最上面,第二次排序之后,第二大的泡泡(数)飘到倒数第二的位置 ..... 以此类推,直至完成从小到大的排序。 冒泡排序...

zh_iOS
02/06
0
0
面试 9:Java 玩转冒泡排序

面试 9:用 Java 实现冒泡排序 南尘的朋友们,新的一周好,原本打算继续讲链表考点算法的,这里姑且是卡一段。虽然在我们 Android 开发中,很少涉及到排序算法,因为基本官方都帮我们封装好了...

nanchen2251
07/16
0
0
数据结构/算法——冒泡排序算法*

最原始的排序方法是只取出最大的,而冒泡排序除了出去最大的,还要将相邻的2个元素的位置互换。 冒泡排序是排序算法里比较简单的算法,即循环n轮,每轮都冒出个最大的,同时相邻的2个元素的位...

cjun1990
2015/10/10
91
0
排序——冒泡排序法

一、冒泡排序法概述 冒泡排序法的基本思想是:对待排序记录关键字从后往前(逆序)进行多遍扫描,当发现相邻两个关键字的次序与排序要求的规则不符时,就将这两个记录进行交换。这样,关键字...

翼动动空
2016/06/05
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

重构系统的套路-面向对象设计原则

前言 一讨论系统重构,很多人不明所以的就开始画各种架构图,写各种高可用,高并发设计方案,其实不知道很多系统的腐朽是从代码失控开始的,所以重构系统之前,架构师需要深谙面向对象设计之...

春哥大魔王的博客
6分钟前
1
0
Private Cloud和On-Premise区别

大家常常听到Private Cloud和On-Premise两个术语,下面通过相关背景介绍区分两者的差别: Private Cloud定义 维基百科云计算 词条中解释了Private Cloud,其含义为“Private cloud is cloud ...

突突突酱
6分钟前
0
0
Linux-ubuntu学习(第一天)

Linux第一天 1.Linux与Windows的区别 Windows是桌面OS。Linux是作为服务器的OS。Linux作为服务器是更安全更稳定的。 2.虚拟机的理解 学习java的时候有个java虚拟机JVM。如果想要在windows上运...

柠檬果过
17分钟前
0
0
以太坊应用开发接口:JSON RPC API

以太坊应用开发接口指的是以太坊节点软件提供的API接口,去中心化应用可以利用这个接口访问以太坊上的智能合约。以太坊应用开发接口采用JSON-PRC标准,通常是通过HTTP或websocket提供给应用程...

汇智网教程
26分钟前
3
0
排序--二分插入排序

二分插入排序是对直接插入排序的一个优化,在排序--直接插入排序中已经分析过直接插入排序的最坏时间复杂度是平方级别的,二分插入排序则是通过二分查找对寻找插入位置进行了优化,在找到插入...

FAT_mt
37分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部