`
yuxingfirst
  • 浏览: 50583 次
  • 性别: Icon_minigender_1
  • 来自: 湘潭
社区版块
存档分类
最新评论

算法研究系列---冒泡排序

 
阅读更多

为了毕业面试需要,计划好好的研究一遍算法,以博客的形式记录下来,同时也为了加深自己的理解.

今天要记录的是:冒泡排序

 

 

冒泡排序是一种典型的交换排序算法.同时也是几大排序算法中比较简单的一个.

 

算法思想:通过无序区中相邻记录关键字间的比较和位置的交换,,是关键字较小的记录如同气泡一样上浮,整个算法从记录的最下面开始,对每两个相邻的关键字进行比较,并将关键字小的记录置换到关键字较大的记录之上,是的一趟排序之后,关键字最小的记录上浮到了记录的最上端。以此类推,每次比较都会将本次比较范围的记录中最小的记录置换到最上端,这样当最后一趟完成时,所有记录就都是有序的了...

 

java代码:

 

public class BubbleSort {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		int[] a = new int[]{7,5,3,4,6,1,10,9,8,2}; 
		a = bubbleSort(a, 10);
		for(int i = 0; i<10; i++) {
			System.out.println(a[i]);
		}
		
	}
	
	public static int[] bubbleSort(int[]a, int n) {
		int i, j;
		int change = 0; 
		int tmp=-1;
		for(i=0; i<n-1; i++) {
			 change= 0;
			 for(j=n-1; j>i; j--) {
				 if(a[j] < a[j-1]) {
					tmp = a[j-1];
					a[j-1] = a[j];
					a[j] = tmp;
					change = 1;
				 }
			 }
			 if(change == 0) {
				 break;
			 }
		}
		return a;
	}

}
 

 

这里用到了一个小技巧,即代码中的变量:change,因为如果在一趟排序中没有发生位置交换,则表明当前的序列已经是有序的了,后面的比较操作就不需要再进行下去,应当跳出循环,所以在这里用change变量来标识在一趟比较中是否发生的置换操作,若没有,则跳出循环.

1
1
分享到:
评论

相关推荐

    数据结构:交换排序-冒泡排序实验指导

    ### 数据结构:交换排序-冒泡排序实验指导 #### 实验背景与目标 在计算机科学领域,数据结构和算法是核心研究对象,其中排序算法作为基础且重要的算法之一,广泛应用于各类数据处理场景。本实验旨在深入理解并掌握...

    插入和冒泡排序算法Demo

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

    数据结构与排序算法------通过代码示例,讲解:数据结构和9种排序算法。.zip

    算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...

    S7-200SMART冒泡排序源程序及库文件(可重复调用).rar

    通过研究冒泡排序的源程序,开发者可以了解如何在PLC环境中实现复杂的算法;而库文件则提供了便捷的方式,使得排序功能可以在多个项目中轻松复用。对于想要提升S7-200SMART编程技能的工程师来说,这是一个不可多得的...

    《C常用算法程序集-徐士良》源代码

    1. **基础算法**:在源代码中,你将找到诸如排序、查找等经典算法的实现,如冒泡排序、插入排序、选择排序、快速排序、二分查找等。这些算法是所有编程学习者的基石,通过它们你可以理解数据结构和算法的基本思想。 ...

    排序算法效率分析-动态显示排序过程

    本软件是由资深算法研究者精心编写的,旨在通过动态展示排序算法的过程,帮助用户深入理解各种排序算法的工作原理,并简化测试与分析流程。 一、排序算法的重要性 排序是数据处理的基础操作,无论是数据库查询优化...

    Python语言程序设计课教程 中英双语课件 Python中的1ADS算法-6-排序算法 共118页.pptx

    常见的迭代排序算法有冒泡排序、插入排序、选择排序和快速排序等。 - 冒泡排序:通过相邻元素的比较和交换,逐步将最大(或最小)的元素“冒泡”到列表的末尾。 - 插入排序:将每个元素视为一个有序序列,逐个将...

    冒泡排序和快速排序的时间性能

    冒泡排序和快速排序是两种常用的排序算法,它们的时间性能是开发者和研究人员所关心的热点话题。在本文中,我们将对冒泡排序和快速排序的时间性能进行深入分析和比较。 冒泡排序是一种简单的排序算法,它的时间...

    冒泡排序算法.zip

    冒泡排序是一种经典的排序算法,它的基本思想是通过重复遍历待排序的序列,比较相邻元素并根据需要交换它们的位置,使得较大的元素逐渐“冒”到序列的末尾。这个过程会持续进行,直到整个序列变得有序为止。在这个...

    排序方式 堆排序 选择 冒泡排序 归并排序 插入 选择

    本资源包含了几种常见的排序算法,包括堆排序、选择排序、冒泡排序、归并排序和插入排序。这些排序算法各有特点,适用于不同的场景,并且在理解它们的工作原理后,能够帮助初学者更好地掌握编程基础。 1. **堆排序*...

    冒泡排序法改进前后的比较_冒泡排序法改进前后的比较_

    冒泡排序是一种基础的排序算法,它通过重复遍历待排序的序列,比较相邻元素并交换位置,使得每个元素都能逐步“浮”到正确的位置上。这种方法得名于排序过程中较小的元素像气泡一样逐渐上升到序列的顶端。本文将深入...

    华中科技大学数据结构与算法分析实验-内部排序实验报告

    本实验旨在深入理解并掌握常见内部排序算法,包括直接插入排序、冒泡排序、简单选择排序、快速排序、希尔排序和堆排序。通过实际操作和性能比较,实验者能够对这些算法有更直观的认识,并能对不同场景下排序算法的...

    c#冒泡排序_简单入手的C#算法

    通过研究C#的冒泡排序,不仅可以了解排序算法的基本概念,还可以加深对控制流程、数组操作的理解,同时为学习更复杂的算法打下坚实的基础。在学习过程中,可以尝试优化冒泡排序,比如添加一个标记来检测是否需要继续...

    算法-数据结构和算法-12-希尔排序.rar

    希尔排序(Shell Sort)是一种基于插入排序的快速排序方法,由Donald Shell于1959年提出。它的主要思想是将待排序的元素...但由于其不稳定性,如果对稳定性有要求,可以选择其他稳定的排序算法,如归并排序或冒泡排序。

    《大学计算机-计算思维导论》16-18学时-排序问题及其算法-ding-20201

    排序算法有多种,如冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序等,每种都有其适用场景和性能特点。在实际应用中,选择合适的排序算法对于优化程序性能至关重要。例如,快速排序和归并排序在大多数...

    (全部算法)---严蔚敏版.rar

    1. **排序算法**:包括冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序、希尔排序等,它们是数据处理的基础,帮助我们理解如何有效地组织和处理大量数据。 2. **查找算法**:如顺序查找、二分查找、哈希...

    排序算法之冒泡排序.zip

    冒泡排序是一种基础且经典的排序算法,其基本思想是通过不断地交换相邻的逆序元素,逐步将较大的元素“冒”到数组的后部,从而实现整个序列的有序化。这个过程就像水底下的气泡逐渐上升到水面一样,因此得名“冒泡...

    算法入门系列2-在水一方1

    - **排序算法** - 如冒泡排序、插入排序、选择排序、快速排序、归并排序等,它们的目标是将一组数据按照特定顺序排列。 - **查找算法** - 如线性查找、二分查找等,用于在数据集中寻找特定元素。 - **图算法** - ...

Global site tag (gtag.js) - Google Analytics