【Java】五种常见排序之-----------冒泡排序

冒泡排序:

 

  • 原理: 将关键字较小的值不断地上浮,将关键字值较大的不断下沉;
  • 时间复杂度:O(n^2)
  • 空间复杂度:最优(即已经排好序)为0,平均空间复杂度为O(1);
  • 核心代码:

 

for(int i=0;i<n;i++){

for(int j=i;j<n;j++){

if(num[i]>num[j]){//数值较大的数进行交换下沉

int temp;

temp=num[i];

num[i]=num[j];

num[j]=temp;

}

}

}


【Java实现完整代码】


 

package paixu;

 

 

/**

 

 

* @author xpengfei

 

 

*/

 

 

import java.util.Scanner;

 

 

/*

 

 

* 效率最低的冒泡排序

 

 

* 说明冒泡排序的时间复杂度符合O(n^2)。

 

 

 

 

* 时间复杂度,最优与最差都需要[n*(n-1) ] / 2次比较,所以时间复杂度为O(n^2).

 

 

* 空间复杂度,最优即已排好序,空间复杂度为0;平均空间复杂度为O(1)。

 

 

*/

 

 

public class sortOne {

 

 

Scanner input=new Scanner(System.in);

 

 

private int[]num;//存放随机数数组

 

 

private int n;//待输入的数组规模n

 

 

public sortOne(){//构造函数,初始化数组;

 

 

System.out.println("请输入数组大小N的值:");

 

 

n=input.nextInt();

 

 

num=new int[n];

 

 

System.out.println("随机生成的数组如下:");

 

 

for(int i=0;i<n;i++){

 

 

num[i]=(int)(Math.random()*1000);

 

 

System.out.println(num[i]);

 

 

}

 

 

}

 

 

public void sort(){//冒泡排序核心算法

 

 

for(int i=0;i<n;i++){

 

 

for(int j=i;j<n;j++){

 

 

if(num[i]>num[j]){//数值较大的数进行交换下沉

 

 

int temp;

 

 

temp=num[i];

 

 

num[i]=num[j];

 

 

num[j]=temp;

 

 

}

 

 

}

 

 

}

 

 

}

 

 

public void displayResult(){//该函数将排好序的数组进行有序输出

 

 

System.out.println("数组排序后的结果为:");

 

 

for(int i=0;i<n;i++){

 

 

System.out.println(num[i]);

 

 

}

 

 

}

 

 

public static void main(String []args){

 

 

sortOne sone=new sortOne();

 

 

sone.sort();

 

 

sone.displayResult();

 

 

}

 

 

}

 

 


 

 

转载于:https://www.cnblogs.com/xpfei/p/7450815.html

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

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

相关文章

混战的低代码江湖,如何区分「李逵」和「李鬼」?

作者&#xff1a;APICloud 创始人刘鑫 这两年&#xff0c;无论是资本层面&#xff0c;还是企业IT部门的关注&#xff0c;“低代码”都是绝对的热点。互联网圈也似在一夜之间冒出了各种各样的低代码公司。 到底什么是低代码&#xff1f;低代码是新技术么&#xff1f;低代码开发能…

关于捕获键盘信息的processDialogkey方法2--具体应用

自定义控件里的keydown方法无法捕获所有的按键消息的处理方法1&#xff08;自定义控件里的keydown方法无法获取的键值如上下左右键等&#xff09; 处理办法具体如下&#xff1a; 1、首先在自定义控件UserControl1中重写ProcessDialogKey方法 自定义控件UserControl1中重写Proce…

指针

指针 题目一&#xff1a; 计算两数的和与差 本题要求实现一个计算输入的两数的和与差的简单函数。 函数接口定义&#xff1a; void sum_diff( float op1, float op2, float psum, float pdiff ); 其中op1和op2是输入的两个实数&#xff0c;psum和pdiff是计算得出的和与差。 裁判…

【MapGIS精品教程】006:MapGIS根据经纬度计算各比例尺图幅编号

己知某点的经纬度或图幅西南图廓点的经纬度,计算该点所在图幅号。 例题一:某点的经度为11433′45″,纬度为3922′30″,计算所在1:250000图幅的编号。 文章目录 1. 公式计算编号的方法2. 软件计算编号的方法1. 公式计算编号的方法 求解过程: 第一步,利用下列公式计算其所…

分析完百年飞机空难数据,我发现了这几条“保命”小秘诀

来 源&#xff5c;Giao数据 数 据 | YaJie 文 章 | 张子豪,YaJie 本文爬取了飞机失事网1908-2020年空难相关数据&#xff0c;包括空难发生次数、机组和乘客的死亡人数与死亡率、不同季节的空难发生次数、空难相关文本的关键词、空难高发地、空难高发航空公司、空难高发机型以…

用 QuestPDF操作生成PDF更快更高效!

QuestPDFQuestPDF是一个开源的工具库&#xff0c;可以在.NET或者.Net Core中生成pdf文档它提供了一个布局引擎&#xff0c;设计时考虑到了完整的分页支持以及灵活性要求&#xff01;比市面上常见的Aspose和iTextSharp好用太多了&#xff01;GitHub地址安装Install-Package Ques…

ASP.NET vs MVC vs WebForms

许多ASP.NET开发人员开始接触MVC认为MVC与ASP.NET完全没有关系&#xff0c;是一个全新的Web开发&#xff0c;事实上ASP.NET是创建WEB应用的框架而MVC是能够用更好的方法来组织并管理代码的一种更高级架构体系&#xff0c;所以可以称之为ASP.NET MVC。 我们可将原来的ASP.NET称为…

在Blazor 中自定义权限验证

Blazor是什么Blazor 是微软在 .NET 里推出的一个 WEB 客户端 UI 交互的框架&#xff0c;使用 Blazor 你可以代替 JavaScript 来实现自己的页面交互逻辑&#xff0c;可以很大程度上进行 C# 代码的复用&#xff0c;Blazor 对于 .NET 开发人员来说是一个不错的选择。需求背景其实我…

【ArcGIS微课1000例】0035:地图面状符号设计教程

地图符号是表示地图内容的基本手段,它由形状不同、大小不一、色彩有别的图形和文字组成。 地图符号是地图的语言,是一种图形语言。它与文字语言相比较,最大的特点是形象直观,一目了然。 本文讲解ArcGIS中面状符号设计方法。 文章目录 一、新建符号样式二、面状符号设计1. 斜…

MySQL夺命15问,你能坚持到第几问?

前言 MySQL在面试中经常被问到&#xff0c;本文总结了面试中的经典问题。 1. 数据库三大范式是什么&#xff1f; 第一范式&#xff1a;每个列都不可以再拆分。 第二范式&#xff1a;在第一范式的基础上&#xff0c;非主键列完全依赖于主键&#xff0c;而不能是依赖于主键的一部…

ios元素定位

原文地址http://www.cnblogs.com/meitian/p/7373460.html 第一种&#xff1a;通过Appium1.6的Inspector来查看 具体安装方式前面的随笔已经介绍了&#xff1a;http://www.cnblogs.com/meitian/p/7360017.html可以通过定位找到元素xpath或name个人不推荐用这个方法&#xff0c;实…

使用 LSM-Tree 思想基于.NET 6.0 C# 写个 KV 数据库(案例版)

文章有点长&#xff0c;耐心看完应该可以懂实际原理到底是啥子。这是一个KV数据库的C#实现&#xff0c;目前用.NET 6.0实现的&#xff0c;目前算是属于雏形&#xff0c;骨架都已经完备&#xff0c;毕竟刚完工不到一星期。当然&#xff0c;这个其实也算是NoSQL的雏形&#xff0c…

35.使用拦截器实现权限验证

转自&#xff1a;https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 为了说明此问题&#xff0c;我们建立struts2auth项目&#xff0c;流程图如下&#xff1a; 简短说明&#xff1a;当我们访问main.jsp页面&#xff0c;并试图通过此页面中的链接地址&#xff1a;not…

如何保证缓存和数据库的一致性?

1. 问题分析 2. Cache-Aside 2.1 读缓存 2.2 写缓存 2.3 延迟双删 2.4 如何确保原子性 3. Read-Through/Write-Through 3.1 Read-Through 3.2 Write-Through 4. Write Behind 很多小伙伴在面试的时候&#xff0c;应该都遇到过类似的问题&#xff0c;如何确保缓存和数据库…

Pressed状态和clickable,duplicateParentState的关系

做Android开发的人都用过Selector,可以方便的实现View在不同状态下的背景。不过&#xff0c;相信大部分开发者遇到过和我一样的问题&#xff0c;本文会从源码角度&#xff0c;解释这些问题。 首先&#xff0c;这里简单描述一下&#xff0c;我遇到的问题&#xff1a; 界面上有个…

【招聘(南京)】 慧咨环球南京研发中心 .NET和Blazor 前端

主要的亮点快速增长的、产品导向型的全球性科技公司设计和开发市场领先的软件解决方案WLB — 工作生活相平衡澳洲排名前五的软件公司混合办公 — 3天在家办公&#xff0c;2天在办公室办公在C#和.NET开发&#xff0c;企业级系统研发&#xff0c;软件工程方面有长期的优秀实践和技…

用Python+Django在Eclipse环境下开发web网站【转】

一、创建一个项目如果这是你第一次使用Django&#xff0c;那么你必须进行一些初始设置。也就是通过自动生成代码来建立一个Django项目--一个Django项目的设置集&#xff0c;包含了数据库配置、Django详细选项设置和应用 特性配置&#xff0c;具体操作步骤如下所示。 1.新建Djan…

[转]数据结构KMP算法配图详解(超详细)

KMP算法配图详解 前言 KMP算法是我们数据结构串中最难也是最重要的算法。难是因为KMP算法的代码很优美简洁干练&#xff0c;但里面包含着非常深的思维。真正理解代码的人可以说对KMP算法的了解已经相当深入了。而且这个算法的不少东西的确不容易讲懂&#xff0c;很多正规的书本…

BGP-MED-2

BGP-MED-2如图&#xff1a;当AS100去往AS300的60、10的网络时&#xff0c;60走R3&#xff0c;10走R1!使用MED属性影响选路&#xff01; R2的配置 bgp 200peer 1.1.1.1 as-number 100 peer 1.1.1.1 ebgp-max-hop 255 peer 1.1.1.1 connect-interface LoopBack0peer 4.4.4.4 as-n…

WPF 实现 Gitee 气泡菜单(一)

WPF 实现 Gitee 气泡菜单&#xff08;一&#xff09;气泡菜单&#xff08;一&#xff09;作者&#xff1a;WPFDevelopersOrg原文链接&#xff1a; https://github.com/WPFDevelopersOrg/WPFDevelopers框架使用大于等于.NET40&#xff1b;Visual Studio 2022;项目使用 MIT 开…