Java之Algorithm_analysis案例详解
作者:lxj_csdn 发布时间:2022-03-07 01:34:50
/*
冒泡排序:双层循环
1.外层循环:控制排序轮数,排序数组长度减1(最后一次循环只剩下一个元素,不需要比较,同时数组已完成排序。
2.内层循环:比较数组临近元素大小,确定是否交换位置,对比和交换次数随排序轮数而减少。
*/
public class BubbleSort {
public void sort(int[] array){
for(int i=1;i<array.length;i++){//控制轮数
//比较相邻两个元素,较大的数往后冒泡
for(int j=0;j<array.length-i;j++){//控制交换次数
if(array[j]>array[j+1]){//第一个数大于第二个数,进行交换
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
System.out.println("第-------"+j+"-------次");
}
System.out.println("第"+i+"轮");
showArray(array);
}
}
showArray(array);
}
/*
显示数组
*/
public void showArray(int[] array){
for(int i:array){//遍历数组
System.out.print(" 》"+i);
}
System.out.println();
}
public static void main(String[] args) {
//创建一个数组,这个数组元素是乱序的
int[] array = {63,4,24,1,3,15};
System.out.println("数组长度:"+array.length);
System.out.println("=========================");
//创建冒泡排序类对象
BubbleSort sorter = new BubbleSort();
//调用排序方法将数组排序
sorter.sort(array);
}
显示结果
数组长度:6
=========================
第-------0-------次
第1轮
》4 》63 》24 》1 》3 》15
第-------1-------次
第1轮
》4 》24 》63 》1 》3 》15
第-------2-------次
第1轮
》4 》24 》1 》63 》3 》15
第-------3-------次
第1轮
》4 》24 》1 》3 》63 》15
第-------4-------次
第1轮
》4 》24 》1 》3 》15 》63
第2轮
》4 》24 》1 》3 》15 》63
第-------1-------次
第2轮
》4 》1 》24 》3 》15 》63
第-------2-------次
第2轮
》4 》1 》3 》24 》15 》63
第-------3-------次
第2轮
》4 》1 》3 》15 》24 》63
第-------0-------次
第3轮
》1 》4 》3 》15 》24 》63
第-------1-------次
第3轮
》1 》3 》4 》15 》24 》63
第3轮
》1 》3 》4 》15 》24 》63
第4轮
》1 》3 》4 》15 》24 》63
第4轮
》1 》3 》4 》15 》24 》63
第5轮
》1 》3 》4 》15 》24 》63
》1 》3 》4 》15 》24 》63
/*直接选择排序:指定排序位置与其他元素比较。交换次数减少。*/
public class SelectSort {
public void sort(int[] array) {
int index;
for (int i = 1; i < array.length; i++) {
index = 0;
for (int j = 1; j <= array.length - i; j++)
if (array[j] > array[index]) {
index = j;
}
//交换位置array.length-i和index(最大值)上的两个数
int temp = array[array.length-i];
array[array.length - i] = array[index];
array[index] = temp;
}
showArray(array);
}
/*
显示数组
*/
public void showArray(int[] array) {
for (int i : array) {//遍历数组
System.out.print(" 》" + i);
}
System.out.println();
}
public static void main(String[] args) {
//创建一个数组,这个数组元素是乱序的
int[] array = {63, 4, 24, 1, 3, 15};
System.out.println("数组长度:" + array.length);
System.out.println("=========================");
//创建冒泡排序类对象
SelectSort sorter = new SelectSort();
//调用排序方法将数组排序
sorter.sort(array);
}
}
运行结果:
数组长度:6
=========================
》1 》3 》4 》15 》24 》63
来源:https://blog.csdn.net/lxj_csdn/article/details/82825476


猜你喜欢
- 对开场白没兴趣?好吧,我们直接切入正题,下面介绍10个C#编程和Visual Studio IDE使用技巧。1、Environment.Ne
- 应用场景最近社区总有人发文章带上小广告,严重影响社区氛围,好气!对于这种类型的用户,就该永久拉黑!社区的安全框架使用了 spring-sec
- 在谈 JVM 内存区域划分之前,我们先来看一下 Java 程序的具体执行过程,我画了一幅图。Java 源代码文件经过编译器编译后生成字节码文
- 本文实例为大家分享了Opencv轮廓外背景颜色改变的具体代码,供大家参考,具体内容如下自行学习弄得简单代码,使用了图像中的轮廓发现以及提取,
- Spring Boot包含许多附加功能,可帮助您在将应用程序投入生产时对其进行监视和管理。可以选择使用HTTP端点或JMX管理和监视您的应用
- 基于SpringAOP已经实现统一功能增强,但如果希望对Controller增强,就无法获取其中的http请求数据。因此,实现以下这些统一增
- Android 自定义imageview实现图片缩放实例详解 觉得这个自定义的imageview很好用 性能不错 所以
- 之前学习 Java 的时候,感觉最难做的一件事情就是配置 jdk 的环境。那叫一个困难啊,Path, JAVA_HOME, CLASSPAT
- 导航是指支持用户导航、进入和退出应用中不同内容片段的交互。Android Jetpack 的导航组件可帮助您实现导航,无论是简单的按钮点击,
- 本文内容大多基于官方文档和网上前辈经验总结,经过个人实践加以整理积累,仅供参考。1、日期时间字符串转换成毫秒@Testpublic void
- 使用FastJson解决long类型在js中失去精度问题1.pom中需要将默认的jackson排除掉<dependency>&n
- 问题springcloud 版本 为 Finchley.RELEASEspringboot 版本为 2.0.3.RELEASE现在有需求,/
- 目录1、通过session中的token验证步骤1:创建自定义注解步骤2:创建自定义 * (@slf4j是lombok的注解)步骤3:将自定
- 这个破碎动画,是一种类似小米系统删除应用时的 * 破碎效果的动画。效果图展示先来看下是怎样的动效,要是感觉不是理想的学习目标,就跳过,避免浪费
- 目标依赖<!-- poi工具类--> <dependency>
- Dagger2注入框架原理简要分析使用Dagger2需要的依赖:implementation 'com.google.dagger:
- 一、概述项目中经常用到倒计时的功能,比如说限时抢购,手机获取验证码等等。而google官方也帮我们封装好了一个类:CountDownTime
- 隐藏标题栏基于xml<application android:theme="@style/Them
- 一、MyBatis简介MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参
- 本文实例为大家分享了java将某个数据库的表全部导出到excel中的方法,供大家参考,具体内容如下第一步:如何用POI操作Excel@Tes