插入排序的变体——冒泡排序

上一篇博文说到了插入排序,如果我将内循环中的较大元素都向右移动,而不是总是两两之间进行交换。这个把较大元素不断上浮的算法就是大家经常说的冒泡排序


 1 public class BubbleSort
2 {
3 public static void sort(int[] a)
4 {
5 int N = a.length;
6 int count = 0;
7 for (int k = 1; k < N; k++)
8 {
9 for (int i = 1; i < N; i++) // 只有这句话与插入排序不同
10 {
11 if (a[i] < a[i-1])
12 {
13 int temp = 0;
14 temp = a[i];
15 a[i] = a[i-1];
16 a[i-1] = temp;
17 count++;
18 }
19 }
20 }
21
22 for (int i = 0; i < N; i++)
23 System.out.print(a[i] + " ");
24 System.out.println("count = " + count);
25 }
26
27 public static void main(String[] args)
28 {
29 int[] a = {6, 2, 5, 3, 1, 4};
30 BubbleSort.sort(a);
31 }
32 }

时间: 2024-10-05 18:00:20

插入排序的变体——冒泡排序的相关文章

从头认识java-18.2 基本的线程机制(6)-使用构造器或者内部类来实现多线程的编码变体

这一章节我们来讨论一下使用构造器或者内部类来实现多线程的编码变体. 1.基础实现 package com.ray.ch17; public class Test { public static void main(String[] args) { Thread thread1 = new ExtendsThread(); thread1.start(); Thread thread2 = new Thread(new ImplRunnable()); thread2.start(); } } c

变体(协变与逆变)

变体的引入是为了提高泛型类型的变量在赋值时可以对类型进行兼容性转换,以扩展泛型的灵活性.下面看个例子: public delegate void DoWork<T>(T arg); ........ DoWork<A> del1=delegate(A arg){//.......}; DoWork<B> del2=del1; B bb=new B(); del2(bb); 其中A ,B是两个类,B类继承A类,即:public class A{.....}        

labview 变体

变体数据类型是LabVIEW中多种数据类型的容器.将其它数据转换为变体时,变体将存储数据和数据的原始类型,保证日后可将变体数据反向转换. 例如,如将字符串数据转换为变体,变体将存储字符串的文本,以及说明该数据是从字符串(而不是路径.字节数组或其它LabVIEW数据类型)转换而来的信息. 变体函数可用于创建和操作变体数据.可将平化数据和LabVIEW数据转化为变体数据,或将变体数据转化为LabVIEW数据. 变体数据类型可存储数据的属性.属性是定义的数据及变体数据类型所存储的数据的信息. 例如,如

Android Studio下项目构建的Gradle配置及打包应用变体

Gradle简介 ??Gradle是一个自动化构建工具,采用Groovy的Domain Specific Language(领域特定语言)来描述和控制构建逻辑.具有语法简洁.可读性强.配置灵活等特点.基于Intellij IDEA社区版本开发的Android Studio天生支持Gradle构建程序.Groovy是一种基于JVM的敏捷开发语言,结合了Phthon.Ruby和Smalltalk的许多强大特性.同时,Groovy代码既能够与java代码很好地结合,也能够用于扩展现有的代码. Grad

(转) 干货 | 图解LSTM神经网络架构及其11种变体(附论文)

干货 | 图解LSTM神经网络架构及其11种变体(附论文) 2016-10-02 机器之心 选自FastML 作者:Zygmunt Z. 机器之心编译  参与:老红.李亚洲 就像雨季后非洲大草原许多野生溪流分化成的湖泊和水洼,深度学习已经分化成了各种不同的专门架构. 并且,每个架构都会有一个图解,这里将详细介绍它们. 神经网络在概念上很简单,并且它们十分动人.在层级上,有着一堆同质化的元素和统一的单位,并且它们之间还存在在一系列的加权连接.这就是神经网络的所有,至少从理论上来说是这样.然而,时间

5.2 vector: 创建和使用vector的各种变体

Clojure练习-5.组合数据类型 "用100个函数来操作一个数据结构比10个函数操作10个数据结构要好很多.基于一个统一的数据结构,我们可以构建出一系列的小函数,这些小函数又可以组合起来形成一个强大的系统.而为不同的数据结构编写不同的函数,在根本上就削减了复用的可能." -- [ Alan Perlis ] Clojure练习-5组合数据类型 组合数据类型 2 vector 创建和使用vector的各种变体 已知 解1 测试 解2 测试 5. 组合数据类型 5.2 vector:

单例模式变体

/**饿汉模式*/ public class EagerSingleton { private static EagerSingleton eagerSingleton=new EagerSingleton(); private EagerSingleton() { super(); } public static EagerSingleton getInstance(){ return eagerSingleton; }} /* *懒汉模式 *优点: 不使用就不创建, 节省内存空间.  * 缺

[转]Delphi 变体类型(Variant)的介绍(流与变体类型的相互转换、变体类型常用的函数)

Delphi 变体类型(Variant)的介绍(流与变体类型的相互转换.变体类型常用的函数) 一.变体类型常用的函数介绍: Variant: 一种可以拥有各种数据类型: 也可以告诉目前存储的数据是什么类型(通过使用VarType函数): 可以给相同的Variant分配不同的数据类型,只要Variant包含数字值就可以执行算法: variant数组只不过是variant型的数组,不必包含同类型的数据: 1.  VarArrayOf函数:更快捷的创建一维变体数组,可以创建全异的数值数组: funct

Bootstrap 标签的变体 实例样式

Bootstrap 标签样式,代码如下: <!DOCTYPE html> <html> <head> <title>Bootstrap 实例 - 标签的变体</title> <style type="text/css"> .label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#f