为了毕业面试需要,计划好好的研究一遍算法,以博客的形式记录下来,同时也为了加深自己的理解.
今天要记录的是:冒泡排序
冒泡排序是一种典型的交换排序算法.同时也是几大排序算法中比较简单的一个.
算法思想:通过无序区中相邻记录关键字间的比较和位置的交换,,是关键字较小的记录如同气泡一样上浮,整个算法从记录的最下面开始,对每两个相邻的关键字进行比较,并将关键字小的记录置换到关键字较大的记录之上,是的一趟排序之后,关键字最小的记录上浮到了记录的最上端。以此类推,每次比较都会将本次比较范围的记录中最小的记录置换到最上端,这样当最后一趟完成时,所有记录就都是有序的了...
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. **基础算法**:在源代码中,你将找到诸如排序、查找等经典算法的实现,如冒泡排序、插入排序、选择排序、快速排序、二分查找等。这些算法是所有编程学习者的基石,通过它们你可以理解数据结构和算法的基本思想。 ...
本软件是由资深算法研究者精心编写的,旨在通过动态展示排序算法的过程,帮助用户深入理解各种排序算法的工作原理,并简化测试与分析流程。 一、排序算法的重要性 排序是数据处理的基础操作,无论是数据库查询优化...
常见的迭代排序算法有冒泡排序、插入排序、选择排序和快速排序等。 - 冒泡排序:通过相邻元素的比较和交换,逐步将最大(或最小)的元素“冒泡”到列表的末尾。 - 插入排序:将每个元素视为一个有序序列,逐个将...
冒泡排序和快速排序是两种常用的排序算法,它们的时间性能是开发者和研究人员所关心的热点话题。在本文中,我们将对冒泡排序和快速排序的时间性能进行深入分析和比较。 冒泡排序是一种简单的排序算法,它的时间...
冒泡排序是一种经典的排序算法,它的基本思想是通过重复遍历待排序的序列,比较相邻元素并根据需要交换它们的位置,使得较大的元素逐渐“冒”到序列的末尾。这个过程会持续进行,直到整个序列变得有序为止。在这个...
本资源包含了几种常见的排序算法,包括堆排序、选择排序、冒泡排序、归并排序和插入排序。这些排序算法各有特点,适用于不同的场景,并且在理解它们的工作原理后,能够帮助初学者更好地掌握编程基础。 1. **堆排序*...
本实验旨在深入理解并掌握常见内部排序算法,包括直接插入排序、冒泡排序、简单选择排序、快速排序、希尔排序和堆排序。通过实际操作和性能比较,实验者能够对这些算法有更直观的认识,并能对不同场景下排序算法的...
通过研究C#的冒泡排序,不仅可以了解排序算法的基本概念,还可以加深对控制流程、数组操作的理解,同时为学习更复杂的算法打下坚实的基础。在学习过程中,可以尝试优化冒泡排序,比如添加一个标记来检测是否需要继续...
希尔排序(Shell Sort)是一种基于插入排序的快速排序方法,由Donald Shell于1959年提出。它的主要思想是将待排序的元素...但由于其不稳定性,如果对稳定性有要求,可以选择其他稳定的排序算法,如归并排序或冒泡排序。
排序算法有多种,如冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序等,每种都有其适用场景和性能特点。在实际应用中,选择合适的排序算法对于优化程序性能至关重要。例如,快速排序和归并排序在大多数...
1. **排序算法**:包括冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序、希尔排序等,它们是数据处理的基础,帮助我们理解如何有效地组织和处理大量数据。 2. **查找算法**:如顺序查找、二分查找、哈希...
冒泡排序是一种基础且经典的排序算法,其基本思想是通过不断地交换相邻的逆序元素,逐步将较大的元素“冒”到数组的后部,从而实现整个序列的有序化。这个过程就像水底下的气泡逐渐上升到水面一样,因此得名“冒泡...
- **排序算法** - 如冒泡排序、插入排序、选择排序、快速排序、归并排序等,它们的目标是将一组数据按照特定顺序排列。 - **查找算法** - 如线性查找、二分查找等,用于在数据集中寻找特定元素。 - **图算法** - ...
在这个项目中,我们研究了六种不同的排序算法:快速排序、冒泡排序和堆排序,以及其他三种未明确提及的排序算法。接下来,我们将逐一探讨这些算法的原理和时间性能。 1. **快速排序**:由C.A.R. Hoare提出的快速...
在C#中,冒泡排序可用于对一系列数值进行升序或降序排列。接下来,我们将深入探讨冒泡排序的原理、实现方式以及C#中的具体应用。 ### 冒泡排序原理 冒泡排序的基本思想是通过不断比较相邻元素并交换位置,使较大的...