`
leihongtai2010
  • 浏览: 15001 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

冒泡排序算法实现与分析

阅读更多

基本思想:
    从第0个数据开始,将其与后面的每一个数据比较,如果比其大则调整两个的位置直到最后一个。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

图示:
   


JAVA代码具体实现
package com.leiht.sort;

/**
 * 冒泡排序算法JAVA简单实现
 * 
 * @author Leiht
 * @date 2015-11-11
 */
public class SortBubble {

	public static void main(String[] args) {

		int[] numbersUp = { 56, 45, 78, 67, 99, 13, 34, 49, 55, 34, 12, 77, 1 };
		int[] numbersDown = { 56, 45, 78, 67, 99, 13, 34, 49, 55, 34, 12, 77, 1 };
		SortBubble sort = new SortBubble();
		
		//向上冒泡排序
		sort.sort4Up(numbersUp);
		
		//向下冒泡(下沉)排序
		sort.sort4Down(numbersDown);

	}
	
	private void sort4Up(int[] numbers) {
		System.out.println("排序之前:");
		for (int i = 0; i < numbers.length; i++) {
			System.out.print(numbers[i] + " ");
		}

		// 排序主体
		for (int i = 0; i < numbers.length - 1; i++) {
			// 将第i个元素依次与后面所有元素比较 如果比其大则交换两个的位置
			for (int j = i + 1; j < numbers.length; j++) {
				int temp = numbers[i];
				if (numbers[i] > numbers[j]) {
					numbers[i] = numbers[j];
					numbers[j] = temp;
				}
			}
		}

		System.out.println();
		System.out.println("排序之后:");
		for (int i = 0; i < numbers.length; i++) {
			System.out.print(numbers[i] + " ");
		}
	}
	
	private void sort4Down(int[] numbers) {
		System.out.println("排序之前:");
		for (int i = 0; i < numbers.length; i++) {
			System.out.print(numbers[i] + " ");
		}
		// 冒泡排序
		for (int i = 0; i < numbers.length; i++) {
			for (int j = 0; j < numbers.length - i - 1; j++) {
				// 这里-i主要是每遍历一次都把最大的i个数沉到最底下去了,没有必要再替换了
				if (numbers[j] > numbers[j + 1]) {
					int temp = numbers[j];
					numbers[j] = numbers[j + 1];
					numbers[j + 1] = temp;
				}
			}
		}
		System.out.println();
		System.out.println("排序之后:");
		for (int i = 0; i < numbers.length; i++) {
			System.out.print(numbers[i] + " ");
		}
		
	}
	
}



分析
   冒泡排序是一种稳定的排序方法。 

   •若文件初状为正序,则一趟起泡就可完成排序,排序码的比较次数为n-1,且没有记录移动,时间复杂度是O(n)
  •若文件初态为逆序,则需要n-1趟起泡,每趟进行n-i次排序码的比较,且每次比较都移动三次,比较和移动次数均达到最大值∶O(n2)
  •起泡排序平均时间复杂度为O(n2)
  • 大小: 46.8 KB
0
0
分享到:
评论
3 楼 a2008933024 2015-11-14  
leihongtai2010 写道
大神指点,刚刚研究

...
2 楼 leihongtai2010 2015-11-12  
大神指点,刚刚研究
1 楼 somefuture 2015-11-12  
文件初状为正序,则一趟起泡就可完成排序,排序码的比较次数为n-1,且没有记录移动。

的确是这样,不过你写的算法似乎没有标志位,不能实现这个功能,即使已经完成排序,仍然需要比较到最后

相关推荐

    冒泡排序算法的C++函数模板

    在实际应用中,冒泡排序算法的C++函数模板可以在许多领域中发挥重要作用,例如数据分析、科学计算、机器学习等。在这些领域中,快速、高效的排序算法可以大大提高计算速度和降低计算成本。 冒泡排序算法的C++函数...

    Java冒泡排序算法

    ### Java冒泡排序算法知识点详解 #### 一、冒泡排序基本概念 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是...

    用java实现冒泡排序算法

    用 Java 实现冒泡排序算法 冒泡排序是一种简单的排序算法,它的基本思想是通过反复比较和交换相邻元素的位置来实现排序。下面是用 Java 实现冒泡排序算法的详细解释: 1. 排序方法 冒泡排序的排序方法是将被排序...

    C语言中冒泡排序算法的教学设计与分析.pdf

    冒泡排序算法是计算机科学中非常基本的一种排序算法,其教学设计与分析对于高校C语言教学尤为重要。本文将详细介绍冒泡排序算法的概念、教学方法、以及教学过程设计,并结合多媒体手段和问题引导教学法以及口诀教学...

    一种双向冒泡排序算法的C语言实现及其效率分析.pdf

    基于文件标题和描述的介绍,以下是关于双向冒泡排序算法的C语言实现及其效率分析的知识点。 ### 知识点:双向冒泡排序算法 1. **排序算法分类**:排序算法可按照处理方式不同分为插入类排序、交换类排序和选择类...

    插入和冒泡排序算法Demo

    **插入排序与冒泡排序算法详解** 在计算机科学中,排序是数据处理的重要部分,它涉及到将一组数据按照特定顺序排列。插入排序和冒泡排序是两种基础且经典的排序算法,它们都属于简单排序方法,适合小规模或者部分...

    插入,选择排序的链表实现及快速,希尔,冒泡排序算法实现合集

    这里我们主要探讨的是五种不同的排序算法:插入排序、选择排序、快速排序、希尔排序以及冒泡排序,它们都有对应的链表实现。让我们逐一深入理解这些算法。 1. 插入排序(Insertion Sort) 插入排序是一种简单直观...

    易语言冒泡排序算法

    在易语言中实现冒泡排序算法,我们可以按照以下步骤进行: 1. **初始化**:首先,我们需要一个数组来存储待排序的数据。易语言中定义数组可以通过`数组定义`语句,例如`整数数组 数组名 = [元素个数]`。 2. **外层...

    用C编写的冒泡排序算法

    ### 冒泡排序算法在C语言中的实现 #### 核心知识点解析 ##### 冒泡排序简介 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。...

    算法设计与分析-排序算法源代码

    选择排序 冒泡排序 插入排序 合并排序 快速排序算法原理及代码实现 不同排序算法时间效率的经验分析方法 验证理论分析与经验分析的一致性 void Init_Random();//数组随机数初始化函数声明 void Show_Array();//展示...

    关于c++冒泡排序算法

    本文将围绕C++实现的冒泡排序算法进行深入探讨,旨在为学习者提供全面的知识点梳理。 #### 冒泡排序基本概念 冒泡排序是一种简单的比较排序算法。其工作原理是重复地遍历待排序的数列,一次比较两个元素,如果他们...

    算法可视化系列——排序算法——冒泡排序

    以下是一个详细的冒泡排序算法实现和相关的知识点: 1. **基本概念**: - **排序算法**:对一组数据按照特定的顺序进行排列的算法。 - **冒泡排序**:最简单的排序算法之一,时间复杂度为O(n^2)。 2. **冒泡排序...

    win32汇编语言实现冒泡排序

    基于这样的背景,本文将介绍如何使用Win32汇编语言实现冒泡排序算法。虽然汇编语言的学习曲线较为陡峭,但通过实践可以加深对计算机底层工作原理的理解,并有助于提高程序的执行效率。 #### 二、使用开发环境 - **...

    冒泡排序优化算法

    ### 冒泡排序优化算法 ...通过引入布尔变量`flag`,优化后的冒泡排序算法能够有效减少不必要的比较次数,提高排序效率。这种优化策略特别适用于接近有序的数据集,在实际应用中具有一定的实用价值。

    verilog冒泡排序算法

    在这个“verilog冒泡排序算法”项目中,开发者使用Verilog实现了一个经典的冒泡排序算法,该算法是计算机科学中最基础且易于理解的排序方法之一。 冒泡排序的工作原理是通过不断地比较相邻元素并交换位置,使得每一...

    不同排序算法实现及性能分析(研究生项目作业)

    【排序算法实现与性能分析】 排序算法在计算机科学中占据着至关重要的位置,因为它们直接影响程序执行效率。本文主要探讨了五种常见的排序算法:插入排序、冒泡排序、堆排序、合并排序和快速排序,并进行了性能分析...

    php 冒泡排序算法 优化版本

    根据给定的信息,本文将详细解释PHP中优化版本的冒泡排序算法,并深入探讨其工作原理、优化策略以及实现方式。 ### PHP优化版冒泡排序算法详解 #### 一、冒泡排序的基本概念 冒泡排序是一种简单的排序算法,通过...

Global site tag (gtag.js) - Google Analytics