冒泡排序java

一、最简单粗暴的排序

思想为:让每一个关键字都和它后边的每一个关键字比较,

如果大则交换,这样第一个位置的关键字在一次循环后一定变为最小值。

 1 package demo01;
 2 
 3 class BubbleSort01 {
 4     public static void main(String[] args) {
 5         int[] n = {0,5,2,6,9,3,4,8,1,10,82,100,52,35,46,7};
 6         int i,j;
 7         for(int x=1;x<n.length;x++){
 8             System.out.print(n[x] + "、");
 9         }
10         System.out.println("");
11         
12         for(i=1;i<n.length;i++){
13             for(j=i+1;j<n.length;j++){
14                 if(n[i]>n[j]){
15                     int temp = n[i];
16                     n[i] = n[j];
17                     n[j] = temp;
18                 }
19             }
20         }
21         
22         for(int x=1;x<n.length;x++)
23             System.out.print(n[x]+ "、");
24     }
25 }

 

二、正宗的冒泡排序

思想:

当外循环为1(循环变量i=1),内循环(变量j)由大到小,两两比较,

将较小值换到前面,之道最小值放到最前面;开始下一次循环(i=2),一次类推…………

 

 1 package demo01;
 2 
 3 class BubbleSort02 {
 4     public static void main(String[] args) {
 5         int[] n = {0,5,2,6,9,3,4,8,1};
 6         int i,j;
 7         for(int x=1;x<n.length;x++){
 8             System.out.print(n[x] + "、");
 9         }
10         System.out.println("");
11         
12         for(i=1;i<n.length;i++){
13             for(j=n.length-1;j>=2;j--){
14                 if(n[j]<n[j-1]){
15                     int temp = n[j];
16                     n[j] = n[j-1];
17                     n[j-1] = temp;
18                 }
19             }
20         }
21         
22         for(int x=1;x<n.length;x++)
23             System.out.print(n[x]+ "、");
24     }
25 }

 

 

三、优化的冒泡排序算法

思想:在上述算法二的基础上,对交换数据的步骤进行标记,即,如果发生了数据交换,标记的值就会变化。

当某次外循环进行时,标记位的值始终不变,说明此次循环没有发生值的交换,即说明已经排序完成。

 1 package demo01;
 2 
 3 class BubbleSort03 {
 4 
 5     public static void main(String[] args) {
 6         int[] n = {0,5,2,6,9,3,4,7,8,1};
 7         
 8         for(int x=1;x<n.length;x++){
 9             System.out.print(n[x] + "、");
10         }
11         System.out.println("");
12         
13         int i,j;
14         boolean flag = true;    //flag作为标记
15         for(i=1;i<n.length && flag;i++){
16             flag = false;        //初始化flag
17             for(j=n.length-1;j>=2;j--){
18                 if(n[j]<n[j-1]){
19                     int temp = n[j];
20                     n[j] = n[j-1];
21                     n[j-1] = temp;
22                     flag = true;
23                 }
24             }
25         }
26         
27         for(int x=1;x<n.length;x++)
28             System.out.print(n[x]+ "、");
29     }
30 }

 

 

转载于:https://www.cnblogs.com/XuGuobao/p/7345155.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253780.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CMOS图像传感器——工作原理

一、像素阵列结构 一般像素阵列是由水平方向的行( Row ) 和垂直方向的列(Column)正交排列构成的。像素排列的最基本设计原则是:摄像器件像素排列的坐标,必须在显示的时候能够准确地还原在图像原来的相对位置上。在大多数情况下,每个像素中心线在行的方向和列的方向,即…

追寻终极数据库 - 事务/分析混合处理系统的交付挑战 (3)

挑战&#xff1a;支持多个存储引擎 以下内容并不是新发现&#xff1a;行优化存储适用于OLTP和运营工作负载&#xff0c;而列存储适用于BI和分析工作负载。频繁写入的工作负载适用于行式存储。对Hadoop而言&#xff0c;Hbase适合低延迟工作负载&#xff0c;列式ORC文件或Parquet…

hibernate快速入门

第一步:下载Hibernate的开发包:  http://sourceforge.net/projects/hibernate/files/hibernate3 第二步:Hibernate框架目录结构:  documentation :Hibernate文档  lib :Hibernate开发jar包    bytecode :操作字节码jar包.    jpa :Hibernate的实现jpa规范.   …

U-boot给kernel传参数和kernel读取参数—struct tag

U-boot 会给 Linux Kernel 传递很多参数&#xff0c;如&#xff1a;串口&#xff0c; RAM &#xff0c; videofb 等。 而 Linux kernel 也会读取和处理这些参数。两者之间 通过 struct tag 来传递参数。 U-boot 把要传递给 kernel 的东西保存在 struct tag 数据结构中&#xf…

异步FIFO设计(Verilog)

FIFO&#xff08;First In First Out&#xff09;是异步数据传输时经常使用的存储器。该存储器的特点是数据先进先出&#xff08;后进后出&#xff09;。其实&#xff0c;多位宽数据的异步传输问题&#xff0c;无论是从快时钟到慢时钟域&#xff0c;还是从慢时钟到快时钟域&…

python中RabbitMQ的使用(路由键模糊匹配)

路由键模糊匹配 使用正则表达式进行匹配。其中“#”表示所有、全部的意思&#xff1b;“*”只匹配到一个词。 匹配规则&#xff1a; 路由键&#xff1a;routings [ happy.work, happy.life , happy.work.teacher, sad.work, sad.life, sad.work.teacher ] "#"&am…

数据仓库事实表分类[转]

1&#xff09;在数据仓库领域有一个概念叫Transaction fact table&#xff0c;中文一般翻译为“事务事实表”。 事务事实表是维度建模的数据仓库中三种基本类型事实表中的一种&#xff0c;另外两种分别是周期快照事实表和累积快照事实表。 事务事实表与周期快照事实表、累积快…

嵌入式系统文件系统比较 jffs2, yaffs, cramfs, romfs, ramdisk, ramfs/tmpfs

Linux支持多种文件系统&#xff0c;包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等&#xff0c;为了对各类文件系统 进行统一管理&#xff0c;Linux引入了虚拟文件系统VFS(Virtual File System)&#xff0c;为各类文件系统提供一个统一的操作界面和应用编程接口。 …

Codeforces Beta Round #17 C. Balance DP

C. Balance题目链接 http://codeforces.com/contest/17/problem/C 题面 Nick likes strings very much, he likes to rotate them, sort them, rearrange characters within a string... Once he wrote a random string of characters a, b, c on a piece of paper and began t…

时钟切换处理(Verilog)

随着各种应用场景的限制&#xff0c;芯片在运行时往往需要在不同的应用下切换不同的时钟源&#xff0c;例如低功耗和高性能模式就分别需要低频率和高频率的时钟。两个时钟源有可能是同源且同步的&#xff0c;也有可能是不相关的。直接使用选择逻辑进行时钟切换大概率会导致分频…

SSH整合中,使用父action重构子类action类.(在父类中获取子类中的泛型对象)

import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type;import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven;/*** 文件名 : BaseAction.java* 提取SSH中的action类* 由于SSH的action中采用模型驱动的方法,使用泛…

用BusyBox制作Linux根文件系统

STEP 1&#xff1a;构建目录结构 创建根文件系统目录&#xff0c;主要包括以下目录 /dev /etc /lib /usr /var /proc /tmp /home /root /mnt /bin /sbin /sys #mkdir /home/rootfs #cd /home/rootfs #mkdir dev etc lib usr var proc tmp home roo…

Angular Elements 组件在非angular 页面中使用的DEMO

2019独角兽企业重金招聘Python工程师标准>>> 一、Angular Elements 介绍 Angular Elements 是伴随Angular6.0一起推出的新技术。它借助Chrome浏览器的ShadowDom API&#xff0c;实现一种自定义组件。 这种组件可以用Angular普通组件的开发技术进行编写&#xff0c;…

(转) android里,addContentView()动态增加view控件,并实现控件的顶部,中间,底部布局...

http://blog.csdn.net/bfboys/article/details/52563089转载于:https://www.cnblogs.com/zhangminghan/p/6182909.html

verilog仿真——$test$plusargs 和 $value$plusargs

VERILOG的参数可以用define和parameter的方式定义&#xff0c;这种方法要求我们在编译前将变量必须定义好&#xff0c;编译完成之后再也不能修改&#xff1b; 然而&#xff0c;有时候我们在进行仿真时&#xff0c;需要从外部传递参数&#xff0c;这个要求怎么满足呢&#xff1…

卢卡斯定理

卢卡斯定理:解决一类组合数取模问题 A、B是非负整数&#xff0c;p是质数。AB写成p进制&#xff1a;Aa[n]a[n-1]...a[0]&#xff0c;Bb[n]b[n-1]...b[0]。 则组合数C(A,B)与C(a[n],b[n])*C(a[n-1],b[n-1])*...*C(a[0],b[0]) modp同余 即&#xff1a;Lucas(n,m,p)c(n%p,m%p)*Luc…

内核理解

在纯技术方面&#xff0c;内核是硬件与软件之间的一个中间层。其作用是将应用程序的请求传递给硬件&#xff0c;并充当底层的驱动程序&#xff0c;对系统中的各种设备和组件。内核启动init程序作为第一个进程&#xff0c;该进程负责进一步的系统初始化操作&#xff0c;并显示登…

loadrunner中对https证书的配置

1、准备好网站的证书&#xff0c;一般证书是cer格式&#xff1b; 2、因为loadrunner只支持pem格式的证书&#xff0c;所以要将证书转换格式&#xff0c;利用openssl工具&#xff1b;&#xff08;或者直接让开发提供pem格式的证书&#xff09;3、得到pem格式的证书之后&#xff…

Android 9 Pie震撼来袭 同步登陆WeTest

作者&#xff1a;We Test小编商业转载请联系腾讯WeTest获得授权&#xff0c;非商业转载请注明出处。原文链接&#xff1a;wetest.qq.com/lab/view/40…WeTest 导读2018年8月7日&#xff0c;Google对外发布最新 Android 9.0 正式版系统&#xff0c;并宣布系统版本Android P 被正…

Datapath综合代码规范(Verilog)

一、一般准则 1、有符号数运算 利用类型“signed”完成有符号数运算&#xff0c;而不是用无符号数模拟有符号数运算。这样可以得到更好的QoR。在资源报告中检查操作数的类型和大小。 2、符号/零扩展 尽量不要手动扩展。verilog利用signed/unsigned会自动完成扩展。这样代码可…