为了毕业面试需要,计划好好的研究一遍算法,以博客的形式记录下来,同时也为了加深自己的理解.
今天要记录的是:冒泡排序
冒泡排序是一种典型的交换排序算法.同时也是几大排序算法中比较简单的一个.
算法思想:通过无序区中相邻记录关键字间的比较和位置的交换,,是关键字较小的记录如同气泡一样上浮,整个算法从记录的最下面开始,对每两个相邻的关键字进行比较,并将关键字小的记录置换到关键字较大的记录之上,是的一趟排序之后,关键字最小的记录上浮到了记录的最上端。以此类推,每次比较都会将本次比较范围的记录中最小的记录置换到最上端,这样当最后一趟完成时,所有记录就都是有序的了...
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变量来标识在一趟比较中是否发生的置换操作,若没有,则跳出循环.
分享到:
相关推荐
通过学习和研究冒泡排序算法,我们可以更好地理解计算机科学和数学的重要性和应用价值,也可以更好地理解排序算法在实际应用中的重要性。因此,冒泡排序算法的研究是非常有价值的,它不仅可以提高我们的理论知识,还...
### 数据结构:交换排序-冒泡排序实验指导 #### 实验背景与目标 在计算机科学领域,数据结构和算法是核心研究对象,其中排序算法作为基础且重要的算法之一,广泛应用于各类数据处理场景。本实验旨在深入理解并掌握...
**插入排序与冒泡排序算法详解** 在计算机科学中,排序是数据处理的重要部分,它涉及到将一组数据按照特定顺序排列。插入排序和冒泡排序是两种基础且经典的排序算法,它们都属于简单排序方法,适合小规模或者部分...
算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...
通过研究冒泡排序的源程序,开发者可以了解如何在PLC环境中实现复杂的算法;而库文件则提供了便捷的方式,使得排序功能可以在多个项目中轻松复用。对于想要提升S7-200SMART编程技能的工程师来说,这是一个不可多得的...
数字排序是计算机科学领域中一个基础且重要的概念,它是计算机程序设计与算法研究中不可或缺的一部分。在处理大量数据时,数据排序能够帮助我们更好地分析和管理数据,提高数据处理的效率。排序算法有很多种,每种...
1. **基础算法**:在源代码中,你将找到诸如排序、查找等经典算法的实现,如冒泡排序、插入排序、选择排序、快速排序、二分查找等。这些算法是所有编程学习者的基石,通过它们你可以理解数据结构和算法的基本思想。 ...
本软件是由资深算法研究者精心编写的,旨在通过动态展示排序算法的过程,帮助用户深入理解各种排序算法的工作原理,并简化测试与分析流程。 一、排序算法的重要性 排序是数据处理的基础操作,无论是数据库查询优化...
常见的迭代排序算法有冒泡排序、插入排序、选择排序和快速排序等。 - 冒泡排序:通过相邻元素的比较和交换,逐步将最大(或最小)的元素“冒泡”到列表的末尾。 - 插入排序:将每个元素视为一个有序序列,逐个将...
冒泡排序是一种简单的排序算法,它重复地遍历待排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复进行...冒泡排序在计算机科学的教育领域和算法理论研究中,仍占有其一席之地。
冒泡排序和快速排序是两种常用的排序算法,它们的时间性能是开发者和研究人员所关心的热点话题。在本文中,我们将对冒泡排序和快速排序的时间性能进行深入分析和比较。 冒泡排序是一种简单的排序算法,它的时间...
尽管在实际应用中可能更多地使用快速排序、归并排序等更高效的排序算法,但冒泡排序作为一个基础算法,依然在教育和理论研究中占有重要的位置。 冒泡排序的效率问题主要在于它的时间复杂度为O(n^2),这在数据量大的...
冒泡排序是一种经典的排序算法,它的基本思想是通过重复遍历待排序的序列,比较相邻元素并根据需要交换它们的位置,使得较大的元素逐渐“冒”到序列的末尾。这个过程会持续进行,直到整个序列变得有序为止。在这个...
本资源包含了几种常见的排序算法,包括堆排序、选择排序、冒泡排序、归并排序和插入排序。这些排序算法各有特点,适用于不同的场景,并且在理解它们的工作原理后,能够帮助初学者更好地掌握编程基础。 1. **堆排序*...
本实验旨在深入理解并掌握常见内部排序算法,包括直接插入排序、冒泡排序、简单选择排序、快速排序、希尔排序和堆排序。通过实际操作和性能比较,实验者能够对这些算法有更直观的认识,并能对不同场景下排序算法的...
通过研究C#的冒泡排序,不仅可以了解排序算法的基本概念,还可以加深对控制流程、数组操作的理解,同时为学习更复杂的算法打下坚实的基础。在学习过程中,可以尝试优化冒泡排序,比如添加一个标记来检测是否需要继续...
希尔排序(Shell Sort)是一种基于插入排序的快速排序方法,由Donald Shell于1959年提出。它的主要思想是将待排序的元素...但由于其不稳定性,如果对稳定性有要求,可以选择其他稳定的排序算法,如归并排序或冒泡排序。
冒泡排序、选择排序、插入排序、Shell排序、快速排序、堆排序和合并排序是七种基本的排序算法,它们在计算机科学中扮演着重要角色。每种算法都有其独特的实现方式和应用场景,而Java语言由于其平台无关性和强大的...
排序算法有多种,如冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序等,每种都有其适用场景和性能特点。在实际应用中,选择合适的排序算法对于优化程序性能至关重要。例如,快速排序和归并排序在大多数...