文档章节

冒泡排序

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

数据结构对于一个程序员来说是最基本的基础。要想写出漂亮的代码那么数据结构是必须要关的,作为一名程序员如果不了解数据结构,那么你注定会是一辈子的低级码农。我先从基本的排序开始介绍一系列数据结构和基本算法。
冒泡排序
冒泡排序原理
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
成都
程序员

暂无相关文章

数据结构与算法之双向链表

一、双向链表 1.双向链表的结点结构 typedef struct DualNode{ ElemType data; struct DualNode *prior; // 前驱结点 struct DualNode *next; // 后继结点}DualNode, *DuL...

aibinxiao ⋅ 23分钟前 ⋅ 0

五大最核心的大数据技术

大数据技术有5个核心部分,数据采集、数据存储、数据清洗、数据挖掘、数据可视化。关于这5个部分,有哪些核心技术?这些技术有哪些潜在价值?看完今天的文章就知道了。 大数据学习群:7165810...

董黎明 ⋅ 24分钟前 ⋅ 0

PhpStorm 头部注释、类注释和函数注释的设置

首先,PhpStorm中文件、类、函数等注释的设置在:setting-》Editor-》FIle and Code Template-》Includes下设置即可,其中方法的默认是这样的: /**${PARAM_DOC}#if (${TYPE_HINT} != "v...

nsns ⋅ 25分钟前 ⋅ 0

spring.net AOP

http://www.springframework.net/doc-latest/reference/html/aop-quickstart.html https://www.cnblogs.com/wujy/archive/2013/04/06/3003120.html...

whoisliang ⋅ 29分钟前 ⋅ 0

【HAVENT原创】创建 Dockerfile 生成新的镜像,并发布到 DockerHub

注意:Win7 与 Win10 的版本存在差异,Win7 版本使用 Docker Quickstart Terminal 进入控制台,Win10下面直接用管理员权限打开控制台或者 PowerShell 即可;另外 Win7 下面只能访问 C盘,/ap...

HAVENT ⋅ 30分钟前 ⋅ 0

pom.xml出现web.xml is missing ...解决方案

提示信息应该能看懂。也就是缺少了web.xml文件,<failOnMissingWebXml>被设置成true了。 搜索了一下,Stack Overflow上的答案解决了问题,分享一下。 目前被顶次数最多的回答原文如下: This...

源哥L ⋅ 31分钟前 ⋅ 0

js时间戳与日期格式之间相互转换

1. 将时间戳转换成日期格式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 // 简单的一句代码 var date = new Date(时间戳); //获取一个时间对象 /** 1. 下面是获取时间日期的方法,需要什么样的格式自己...

Jack088 ⋅ 36分钟前 ⋅ 0

web添加log4j

添加xml配置log4j.properties # Global logging configuration---root日志设置#log4j.rootLogger=info,dailyRollingFile,stdoutlog4j.rootLogger=debug,stdout,dailyRollingFile---......

黄柳淞 ⋅ 36分钟前 ⋅ 0

如何解决生产环境宕机问题

写在前面:该篇宕机问题的排查难度远比上一篇(记一次解决线上OOM的心路历程)大的太多,上一篇中内存泄漏的问题是有迹可循的,本次的宕机在业务日志上没有任何征兆,另外本文有许多值得深挖...

寰宇01 ⋅ 48分钟前 ⋅ 0

Redis查漏补缺:最易错过的技术要点大扫盲

作者介绍 孤独烟,中国平安研发工程师,目前负责规则云平台架构设计以及需求研发工作。毕业后一直从事Java开发工作,在Web开发、架构设计上有多年的实战经验。在MySQL性能优化、JVM调优、分布...

kim_o ⋅ 49分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部