为了毕业面试需要,计划好好的研究一遍算法,以博客的形式记录下来,同时也为了加深自己的理解.
今天要记录的是:冒泡排序
冒泡排序是一种典型的交换排序算法.同时也是几大排序算法中比较简单的一个.
算法思想:通过无序区中相邻记录关键字间的比较和位置的交换,,是关键字较小的记录如同气泡一样上浮,整个算法从记录的最下面开始,对每两个相邻的关键字进行比较,并将关键字小的记录置换到关键字较大的记录之上,是的一趟排序之后,关键字最小的记录上浮到了记录的最上端。以此类推,每次比较都会将本次比较范围的记录中最小的记录置换到最上端,这样当最后一趟完成时,所有记录就都是有序的了...
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最小生成树算法),动态规划,贪心算法,回溯法...
sort,scratch2源码Bubble Sort-冒泡排序算法,sb2源文件内含冒泡排序算法代码有兴趣的同学可以下载研究
在这个教程中,我们将深入研究冒泡排序的原理,并提供一个Java示例来演示如何实现它。不管您是初学者还是有经验的Java开发者,通过学习这个算法,您将了解一种排序方法,有助于提高您的算法理解和编程技能。 冒泡...
在这份文档中,我用C语言实现了排序算法的多种方法,包括插入排序、选择排序、冒泡排序、希尔排序、归并排序、快速排序、桶排序和基数排序。这些算法可以帮助我们对数据进行有效的排序和整理,以便更好地处理和分析...
简单的C#算法 适合学习C#的菜鸟研究 算法,算法.
在众多排序算法中,冒泡排序是最基础和最简单的一种。 冒泡排序的基本思想是通过不断比较相邻元素并交换它们的位置,使得较大的元素逐渐“浮”到数组的末端。这个过程会不断重复,直到整个数组都有序为止。虽然冒泡...
一种双向冒泡排序算法的C语言实现及其效率分析.pdf
并行排序算法使用多个处理器对一组元素进行排序,以提高顺序排序算法的性能。 一般来说,排序算法的性能是根据输入大小在算法... 另一方面,在并行效率方面,并行冒泡排序算法在处理器数量较少的情况下应用效率更高。
排序的基本概念以及其算法的种类,介绍几种常见的排序算法的算法:冒泡排序、选择排序、插入排序、归并排序、快速排序、希尔排序的算法和分析它们各自的复杂度,然后以表格的形式,清晰直观的表现出它们的复杂度的...
通过C语言数据结构二叉树来实现遍历、冒泡排序、快速排序等算法的实现。本设计将主要包括以下内容: ## 一、研究背景 二叉树是一种重要的数据结构,在计算机科学领域中被广泛应用。二叉树不仅是一种数据结构,而且...
测量了冒泡排序、插入排序、快速排序、选择排序和合并排序等排序算法的能耗。 结果表明,在平均情况下,快速排序是最节能的排序方法。 冒泡排序是最耗能的算法。 插入排序也是节能的,但随着输入数据项的数量在某个...
全面的排序算法,快速排序,shell排序,冒泡排序,插入排序,交换排序,分配排序,归并排序…… 值得各位研究!
用java对常用排序算法进行分析与实现.包含: 插入排序 直接插入排序、希尔排序 • 选择排序 简单选择排序、堆排序 • 交换排序 冒泡排序、快速排序 • 归并排序 • 基数排序
1、探讨数组在调用元素时越界访问的问题; 2、研究冒泡排序的算法原理和实现方法(面试题);
算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...
首先研究基本的冒泡排序算法、选择排序算法和快速排序算法测试三种排序算法的时间。 其次,利用Score结构体数组讨论排序算法的稳定性。 最后,对double型数组的3个排序函数进行修改,在每个函数中增加2个无符号扩展...
算法老师要求做的,希望对学弟学妹有所帮助,里面包含了性能分析对比图
2.10 构造算法与自上而下逐步完善:实例研究3(嵌套控制结构)--------------54 2.11 赋值运算符-------------------------------------------------------57 2.12 自增与自减运算符----------------------------...