DAY15

数组

冒泡排序

冒泡排序无疑是最为出名的排序算法之一,总共有八大排序

冒泡的代码还是相当简单的,两层循环,外层冒泡轮数,里层依次比较,江湖中人人尽皆知

我们看到嵌套循环,应该马上就可以得到这个算法的时间复杂度为0(n 2)

package com.drumk.array;
import java.util.arrays;
public class ArrayDemo01{pubilc static void main(String[] args){}/*冒泡排序1.比较数组中,两个相邻的元素,如果第一个数比第二个数大,我们就交换他们的位置2.每一次的比较,都会产生出一个最大,或者最小的数字3.下一轮则可以少一次排序4.依次循环,直到结束*/public static int[] sort(int[] array){//临时变量int temp = 0;//外层循环,判断我们这个要走多少次;for(int i = 0;i<array.length-1;i++){boolean flag = false;//通过flag标识位没有意义的比较//内层循环,比价判断两个数,如果第一个数,比第二个数大,则交换位置for(int j = 0;j<array.length-1-i;j++){if(array[j+1]<array[j]){temp = array[j];array[j] = array[j+1];array[j+1] = temp;flag = true;}}if(flag==flase){break;}}return array;}
}

稀疏数组

需求:编写五子棋游戏中,有存盘退出和续上盘的功能

分析问题:因为该二维数组的很多值是默认值0,因此记录了很多没有意义的数据

解决:稀疏数组

当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组

稀疏数组的处理方式是:

  1. 记录数组一共有几行几列,有多少各不同值

  2. 把具有不同值的元素和行列及记录在一个小规模的数组中,从而缩小程序的规模

package com.drumk.array;
import java.util.arrays;
public class ArrayDemo01{pubilc static void main(String[] args){//创建一个二维数组11*11 0:没有棋子 1:黑棋 2:白棋int[][]array1 = new int[11][11];array1[1][2] = 1;array1[2][3] = 2;//输出原始的数组System.out.println("输出原始的数组");for(int[] ints : array1){for(int anInt : ints){System.out.print(anInt+"\t");}System.out.println();}System.out.println("=========================");//转换为稀疏数组保存//获取有效值的个数int sum = 0;for(int i = 0;i<11;i++){for(int j = 0;j<11;j++){if(array1[i][j]!= 0){sum++;}}}System.out.println("有效值的个数:"+sum);//创建一个稀疏数组的数组int[][] array2 = new int[sum+1][3];array2[0][0] = 11;array2[0][1] = 11;array2[0][2] = sum;//遍历二维数组,将非零的值,存放稀疏数组中int count = 0;for(int i = 0;i<array1.length;i++){for(int j = 0;j<array1[i].length;j++){if(array1[i][j]!= 0){count++;array2[count][0] = i;array2[count][1] = j;array2[count][2] = array1[i][j];}}}//输出稀疏数组System.out.println("稀疏数组");for(int i = 0;i<array2.length;i++){System.out.println(array2[i][0]+"\t"+array2[i][0]+"\t"+array2[i][0]+"\t");}System.out.println("=========================");System.out.println("还原");//1.读取稀疏数组int[][] array3 = new int[array2[0][0]][array2[0][1]];//2.给其中的元素还原它的值for(int i = 0;i<array2.length;i++){array3[array2[i][0]][array2[i][1]] = array2[i][2];}//3.打印System.out.println("输出还原的数组");for(int[] ints : array3){for(int anInt : ints){System.out.print(anInt+"\t");}System.out.println();}}
}

面向对象

面向过程

面向过程的思想:

  1. 步骤清晰简单,第一步做什么,第二部做什么

  2. 面对过程适合处理一些较为简单的问题

面向对象的思想:

  1. 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。

  2. 面向对象适合处理复杂的问题,适合处理需要多人协调的问题

注:对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理。

面向对象

面向对象编程(Objet-Oriented Programming,OOP)

面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据。

抽象

三大特性:1.封装 2.继承 3.多态

从认识论角度考虑是先有对象后又类。对象,是具体的事物。类,是抽象的,是对对象的抽象

从代码运行角度考虑是先有类后有对象。类是对象的模板。

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

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

相关文章

错误解决 error CS0117: ‘Buffer‘ does not contain a definition for ‘BlockCopy‘

Unity 2022.3.9f1 导入 Runtime OBJ Importer 后出现&#xff1a; error CS0117: ‘Buffer’ does not contain a definition for ‘BlockCopy’ 解决办法&#xff1a; 源代码&#xff1a; int DDS_HEADER_SIZE 128; byte[] dxtBytes new byte[ddsBytes.Length - DDS_HEAD…

Python + PyQt 搭建可视化页面(PyCharm)

Python PyQt 搭建可视化页面&#xff08;PyCharm&#xff09; 配置PyQt5环境 1.1 安装PyQt5和PyQt5-tools pip install PyQt5pip install PyQt5-tools1.2 QtDesigner和PyUIC环境的配置 配置QTDesigner&#xff0c;用来打开QT可视化开发工具 在PyCharm中依次打开&#xff1a…

软件合集:5大3C产品在线说明书制作利器

3C产品&#xff08;指计算机、通讯和消费性电子三类产品的简称&#xff09;在线说明书在当今数字化时代扮演着至关重要的角色&#xff0c;相较于传统纸质说明书&#xff0c;3C产品在线说明书更加便捷、实时更新且环保。用户可随时在线访问&#xff0c;获取最新信息&#xff0c;…

Matplotlib知识点详解(巨详细!!!)

37.Matplotlib&#xff1a; 配置参数&#xff1a; 如果浏览器不显示图片&#xff0c;加上 %matplotlib inline 让图片可以显示中文 plt.rcParams[font.sans-serif]SimHei 让图片可以显示负号 plt.rcParams[axes.unicode_minus]False 支持svg矢量图 %config Inlineback…

听我的,事务注解真的别乱动!

更多大厂面试内容可见 -> http://11come.cn 听我的&#xff0c;事务注解真的别乱动&#xff01; 背景 故事的起源&#xff1a; 发现存在重复插入数据库的现象&#xff0c;通过排查发现是因为事务中包了锁 原因分析&#xff1a; 当线程 1 释放锁之后&#xff0c;但是此时还…

Java反射详细学习笔记

动态代理 特点 : 无侵入式的给代码增加额外的功能 ; 代理里面就是对象要被代理的方法 ; 通过接口保证,后面的对象和代理需要实现同一个接口 &#xff0c; 接口中就是被代理的所有方法 ; 如何为java对象创建一个代理 : java.lang.reflect.Proxy类 : 提供了为对象产生代理对象的…

【全面讲解下Docker in Docker的原理与实践】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 👉目录 👉前言👉原理👉实践👉安全和最佳实践👉前言 🦛…

JAVA中的泛型机制详解

1.泛型的概念 java泛型是java5引入的一个特性&#xff0c;它允许我们为类&#xff0c;接口&#xff0c;方法指定类型参数&#xff0c;从而提供编译时类型安全检查。泛型的本质是参数化类型&#xff0c;即在声明类&#xff0c;接口或者方法时不指定具体的类型&#xff0c;而是使…

openEuler 安装 ROS2 Humble

openEuler 安装 ROS2 Humble 1 介绍2 安装【openEuler 24.03】2.1 Installing ros-humble2.2 Test ros-humble【python 版本冲突&#xff0c;未解决】 2 安装【openEuler 22.03】3 Python 版本问题【pyenv】参考 1 介绍 2 安装【openEuler 24.03】 2.1 Installing ros-humble…

力扣高频SQL 50题(基础版)第十三题

文章目录 力扣高频SQL 50题&#xff08;基础版&#xff09;第十三题570. 至少有5名直接下属的经理题目说明思路分析实现过程准备数据实现方式结果截图 力扣高频SQL 50题&#xff08;基础版&#xff09;第十三题 570. 至少有5名直接下属的经理 题目说明 表: Employee ------…

Java面试八股之后Spring、spring mvc和spring boot的区别

Spring、spring mvc和spring boot的区别 Spring, Spring Boot和Spring MVC都是Spring框架家族的一部分&#xff0c;它们各自有其特定的用途和优势。下面是它们之间的主要区别&#xff1a; Spring: Spring 是一个开源的轻量级Java开发框架&#xff0c;最初由Rod Johnson创建&…

Linux之存储桶minio单机安装和使用简介

一、minio简介 MinIO 是一个高性能的分布式对象存储系统&#xff0c;主要用于存储非结构化数据&#xff0c;例如照片、视频、备份和日志文件。它是开源的&#xff0c;基于 Go 语言开发&#xff0c;具有高度可扩展性和高可用性&#xff0c;能够在私有云、公有云和边缘环境中部署…

20240725项目的maven环境报红-重新配置maven

1.在编辑器里面打开项目&#xff0c;导入源码 &#xff08;1&#xff09;找到项目的地址C:\Users\zzz\IdeaProjects\datasys&#xff0c;然后右击用idea编辑器打开。 &#xff08;2&#xff09;idea中上菜单栏打开open&#xff0c;然后输入file&#xff0c;选择源代码文件 2.…

LabVIEW放大器自动测量系统

开发了一个基于LabVIEW平台的多路前置放大器自动测量系统的开发与实施。该系统集成了硬件控制与软件编程&#xff0c;能够实现放大器各项性能指标的快速自动测量&#xff0c;有效提高了测试的精确性和效率。系统设计采用了虚拟仪器技术&#xff0c;结合了先进的测量与控制策略&…

丹东纵横文化传媒:创新引领,广告服务再升级

近日,丹东市振兴区的丹东纵横文化传媒有限公司再次传来振奋人心的消息,这家以互联网和相关服务为主的新兴企业,在广告设计与传播领域实现了重大突破,进一步巩固了其在行业内的领先地位。 【广告服务全面升级,引领市场新风尚】 据丹东纵横文化传媒有限公司最新发布的信息显示,公…

掌握AJAX技术:从基础到实战

文章目录 **引言****1. 什么是AJAX&#xff1f;****2. AJAX的工作原理**AJAX 示例使用 Fetch API 实现 AJAX **3. 如何在项目中使用AJAX****4. 处理AJAX请求的常见问题****5. AJAX与JSON的结合****6. 使用AJAX框架和库****7. 实战&#xff1a;创建一个动态表单****8. AJAX中的事…

spine to unity-2.利用边缘框实现实时碰撞检测

主要讲spine的边缘框&#xff0c;在unity中&#xff0c;实现实时碰撞检测。其中使用的素材&#xff0c;是我为独立游戏ink制作的动画。独立游戏ink的开发日志&#xff0c;在小红薯持续更新中。spine工具包的安装&#xff0c;下载请参考spine to unity-1spine BoundingBoxFollow…

Doris全方位教程+应用实例

Impala性能稍领先于presto,但是presto在数据源支持上非常丰富&#xff0c;包括hive、图数据库、传统关系型数据库、Redis等 缺点&#xff1a;这两种对hbase支持的都不好&#xff0c;presto 不支持&#xff0c;但是对hdfs、hive兼容性很好&#xff0c;其实这也是顺理成章的&…

mac怎样清理photoshop垃圾的方法 ps清理缓存和垃圾 苹果电脑暂存盘已满怎么清理

很多使用过ps&#xff0c;尤其是Adobe全家桶的小伙伴会发现&#xff0c;这些软件占用缓存很多&#xff0c;而且随着使用时间的增长&#xff0c;缓存也会越多&#xff0c;并不会自动清理。那么mac系统怎么清理ps暂存盘呢&#xff1f;mac又该怎么最高效清理磁盘空间呢&#xff1f…

Linux嵌入书学习—数据结构——栈(seqstak)

一、栈&#xff1b; 定义&#xff1a; 是限定仅在表尾&#xff08;栈顶&#xff09;进行插入和删除操作的线性表 栈又称为 后进先出&#xff08;Last In First Out&#xff09; 的线性表&#xff0c;简称 LIFO 结构 栈顶&#xff08;Top&#xff09; 栈顶是栈中允许进行添加&…