文档章节

冒泡排序

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
面试 9:Java 玩转冒泡排序

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

nanchen2251
07/16
0
0
iOS冒泡排序

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

zh_iOS
02/06
0
0
数据结构/算法——冒泡排序算法*

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

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

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

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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

es6

在实际开发中,我们有时需要知道对象的所有属性,原生js给我们提供了一个很好的方法:Object.keys(),该方法返回一个数组 传入对象,返回属性名 var obj = {'a':'123','b':'345'};console.l...

不负好时光
19分钟前
0
0
叮!您收到一份超值Java基础入门资料!

摘要:Java语言有什么特点?如何最大效率的学习?深浅拷贝到底有何区别?阿里巴巴高级开发工程师为大家带来Java系统解读,带你掌握Java技术要领,突破重点难点,入门面向对象编程,以详细示例...

全部原谅
21分钟前
0
0
web.xml容器加载顺序

容器对于web.xml的加载过程是context-param >> listener >> fileter >> servlet

Aeroever
23分钟前
1
0
Docker容器日志查看与清理

1. 问题 docker容器日志导致主机磁盘空间满了。docker logs -f container_name噼里啪啦一大堆,很占用空间,不用的日志可以清理掉了。 2. 解决方法 2.1 找出Docker容器日志 在linux上,容器日...

muzi1994
24分钟前
0
0
J2Cache 和普通缓存框架有何不同,它解决了什么问题?

不少人看到 J2Cache 第一眼时,会认为这就是一个普普通通的缓存框架,和例如 Ehcache、Caffeine 、Spring Cache 之类的项目没什么区别,无非是造了一个新的轮子而已。事实上完全不是一回事!...

红薯
27分钟前
484
14

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部