`
greenwen
  • 浏览: 220398 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

冒泡排序算法分析

 
阅读更多
基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

在一般情况下,人们写出的冒泡排序算法是下面这种,但这种并不是正宗的冒泡排序
	public int[] bubbleSort1(int[] bubbleSortArray){
	int temp = 0;
	
	for(int i = 0; i < bubbleSortArray.length-1; i++){
		for(int j = 0; j < i; j++){
			if(bubbleSortArray[j] < bubbleSortArray[i]){
				temp = bubbleSortArray[j];
				bubbleSortArray[j] = bubbleSortArray[i];
				bubbleSortArray[i] = temp;
			}
		}
	}
	
	return bubbleSortArray;
}


以下才是正确的冒泡排序:
// BubbleSort
public int[] bubbleSort2(int[] bubbleSortArray){
	int temp = 0;
	
	for(int i = 0; i<bubbleSortArray.length-1; i++){
		for(int j = 0; j < bubbleSortArray.length-1-i; j++){
			if(bubbleSortArray[j] > bubbleSortArray[j+1]){
				temp = bubbleSortArray[j];
				bubbleSortArray[j] = bubbleSortArray[j+1];
				bubbleSortArray[j+1] = temp;
			}
		}
	}
	
	return bubbleSortArray;
}


上面的冒泡排序还有优化的空间,在内层循环已经有序时,无需再循环下去了
public int[] bubbleSort3(int[] bubbleSortArray){
	int temp = 0;
	boolean needNextPass = true;  
	for(int i = 0; i<bubbleSortArray.length-1 && needNextPass; i++){
		needNextPass = false;
		for(int j = 0; j < bubbleSortArray.length-1-i; j++){
			if(bubbleSortArray[j] > bubbleSortArray[j+1]){
				temp = bubbleSortArray[j];
				bubbleSortArray[j] = bubbleSortArray[j+1];
				bubbleSortArray[j+1] = temp;
				needNextPass = true;
			}
		}
	}
	
	return bubbleSortArray;
}

分享到:
评论

相关推荐

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

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

    冒泡排序算法原理讲解

    该 ppt 为课程讲义,讲解冒泡排序算法原理,及用一个简单实例进行具体分析,还有冒泡排序算法原理的总结等。

    Java冒泡排序算法

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

    冒泡排序基本思想和算法冒泡排序基本思想和算法.

    冒泡排序算法分析 冒泡排序的算法可以分析为三个部分:时间复杂度、空间复杂度和稳定性。 1. 时间复杂度:冒泡排序的时间复杂度可以分为最好、最坏和平均三种情况。最好情况下,时间复杂度为 O(n),最坏情况下,...

    插入和冒泡排序算法Demo

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

    C语言程序设计-程序举例-冒泡排序.pptx

    冒泡排序算法分析: 冒泡排序算法的时间复杂度为O(n^2),因为它需要进行多次遍历整个数列。冒泡排序算法的优点是简单易实现、代码简洁,缺点是效率不高,特别是在处理大规模数据时。 在实际应用中,冒泡排序算法...

    快速、冒泡排序算法比较

    试通过随机数据比较快速排序、起泡排序各算法的关键字比较次数和关键字移动次数。 (1)待排序表的表长不小于100;其中的数据要用伪随机数产生程序产生;... (3)对冒泡排序应指出进行了多少趟。

    易语言冒泡排序算法

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

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

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

    关于c++冒泡排序算法

    ### 关于C++冒泡排序算法的深度解析 在计算机科学与编程领域,排序算法是基础且关键的一部分,其中冒泡排序(Bubble Sort)作为最简单直观的排序算法之一,常被用作教学示例,尤其适合初学者理解排序算法的基本原理...

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

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

    用C编写的冒泡排序算法

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

    用java实现冒泡排序算法

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

    冒泡排序优化算法

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

    verilog冒泡排序算法

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

    php 冒泡排序算法 优化版本

    通过引入标志位进行优化的冒泡排序算法,在最坏情况下依然保持O(n^2)的时间复杂度,但在最好情况下(即数组已经是有序的情况下)可以达到O(n)的时间复杂度,从而提高了排序效率。这种优化策略特别适用于已经部分有序...

    win32汇编语言实现冒泡排序

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

Global site tag (gtag.js) - Google Analytics