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
猜你喜欢
- javabean与map的转换有很多种方式,比如:1、通过ObjectMapper先将bean转换为json,再将json转换为map,但是
- 虽然说模块通信、路由协议在Android已经不新鲜了,但是如果脱离了那些优秀的开源库我们从零开始自己造一个库,有时候重复造轮子会让自己对所谓
- 在使用JDBC的时候,数据库据连接是非常宝贵的资源。为了复用这些资源,可以将连接保存在一个队列中。当需要的时候可以从队列中取出未使用的连接。
- 构造方法以及参数:PageView可用于Widget的整屏滑动切换,如当代常用的短视频APP中的上下滑动切换的功能,也可用于横向页面的切换,
- 1.阻塞I/O模型阻塞IO模型是常见的IO模型,在读写数据时客户端会发生阻塞。阻塞IO模型的工作流程为:1.1在用户线程发出IO请求之后,内
- 实现步骤step1:添加乐观锁 * MP的其他 * 功能可以参考官网@Beanpublic MybatisPlusInterceptor m
- 本文实例为大家分享了java自定义异常打印内容的具体代码,供大家参考,具体内容如下背景:在开发中,我们可能会使用到自定义异常,但是,这个自定
- mybatis 报错显示sql中有两个limit使用mybatis进行分页查询时,打印的查询sql中带有两个limit。经过审查:原因是由于
- 本文主要介绍我为桌面和 Web 设计的一个超级秘密 Flutter 项目使用了画布和可拖动节点界面。本教程将展示我如何使用堆栈来使用小部件完
- 演示代码如下:package swt_jface.demo11; import org.eclipse.swt.SWT; import or
- 冒泡排序冒泡排序的思想:每次让当前的元素和它的下一个元素比较大小、如果前一个的元素大于后一个元素的话,交换两个元素。这样的话经历一次扫描之后
- 本文实例讲述了Spring使用@Resource配置依赖操作。分享给大家供大家参考,具体如下:一 配置<?xml version=&q
- 最近,由于公司项目中需要将系统内用户操作的所有日志进行转存备份,考虑到以后可能还需要还原,所以最后决定将日志数据备份到Excel中。 下面是
- springboot 无法自动装配@Autowired 报错:无法自动装配基本上是因为1、项目里有类似mybatis @Mapper这种第三
- 什么是过滤器过滤器 Filter 基于 Servlet 实现,过滤器的主要应用场景是对字符编码、跨域等问题进行过滤。Servlet 的工作原
- 微软官方的MSDN上说async和await是“异步”,但是不少人(包括笔者自己)都有一些误区需要澄清:为什么await语句之后没有执行?不
- 引言这里实现一个简单的图片上传功能,主要是熟悉这个文件上传的交互流程。关于更复杂的文件上传,如大文件的切片上传、断点续传等,这里不做过多介绍
- 本文实例讲述了如何计算(或者说,估算)一个Java对象占用的内存数量的方法。分享给大家供大家参考。具体分析如下:通常,我们谈论的堆内存使用的
- @Autowired注入依赖失败的问题1、现象描述在Spring Boot项目中使用@Autowired注解,程序启动时发现服务启动失败,提
- 先对问题进行描述:(1)在MyEclipse Servers视图在MyEclipse 10.7.0在某些情况下,可能无法打开。 试图打开视图