day07

1.return关键字的用法return  在有返回值的方法中使用return 返回值;return 关键字书写以后后面的代码就不能写了2.声明方法的四种形式无参无返回值的语法格式有参无返回值的无参有返回值的有参有返回值的3.什么是形参,什么是实参在方法的声明处,写的变量叫形参在方法的调用处,书写的是实参在方法的调用的时候,将实参赋值给形参
4.数组的三种声明方法数据类型[] 数组名字 = {值1, 值2,...};数据类型[] 数组名字 = new 数据类型[容量];数据类型[] 数组名字 = new 数据类型[]{值1, 值2, ...};
5.对第二种数组进行声明的时候如何进行赋值arr[0] = 12;
6.for循环的语法格式和执行流程for () {}

回顾

1.数组的声明三种的声明
2.对数组如何进行赋值通过下标来进行赋值
3.对数组进行取值通过下标进行取值
4.数组可以作为方法的参数
5.数组可以作为方法的返回值[1,2,3,4]=>[4,3,2,1]
1.需求:定义一个方法,找出int数组中,最大值的索引下标
[1,2,23,5,6,7,8]  打印出来2
2.需求:定义一个方法,找出int数组中,最小值的索引下标
3.需求:定义一个方法,在指定的int数组中找出指定的数据第一个的下标8这个数的下标
[1,2,8,4,5,78,7,8,9]4. 在一个数组中,找出所有的 指定数据的下标位置 【难】找出所有的下标存倒数组中8这个数的下标
[1,2,8,4,5,7,8,7,8,9]
5. 完成一个方法,替换掉数组中所有元素为0的元素,替换为指定元素  [1,2,3,0,0,0]
6. 完成一个方法,删除指定下标的元素,要求从删除位置开始,之后的元素整体前移。【难】[1,2,3,4,5,6,7]=>[1,2,4,5,6,7,0]
7. 完成一个方法,添加指定元素到指定下标位置,要求从指定下标位置之后的元素,整体向后移动。【难】[1,2,3,4,5,0]=>[1,2,250,3,4,5]8. 找出数组中最大的元素,放到下标为0的位置9. 在上一道题的基础上,不考虑下标为0的元素。找出数组中最大的元素,放到下标为1的位置

1.方法循环数组的练习题

1.需求:定义一个方法,找出int数组中,最小值的索引标

[1,2,3,4,5]=>0

package com.qfedu.a_test;public class Demo1 {public static void main(String[] args) {//需求:定义一个方法,找出int数组中,最小值的索引下标int[] arr = {3,2,1,4};//2int minIndex = 0;//minIndex目的是用来存储最小值的下标的for (int i = 0; i < arr.length; i++) {/*** i=0 0<4true arr[0]>arr[0] false minIndex=0 i++* i=1 1<4 true arr[0]>arr[1] true minIndex=1 i++* i=2 2<4 true arr[1]>arr[2] true minIndex=2 i++* i=3 3<4 true arr[2]>arr[3]  false i++* i=4 4<4 false 循环结束*/if (arr[minIndex] > arr[i]) {minIndex = i;}}System.out.println(minIndex);}}
package com.qfedu.a_test;public class Demo2 {public static void main(String[] args) {int[] arr = {1,2,3,4,5};System.out.println(minIndexInArray(arr));}public static int minIndexInArray (int[] arr) {int minIndex = 0;for (int i = 0; i < arr.length; i++) {if (arr[minIndex] > arr[i]) {minIndex = i;}}return minIndex;}
}
3.需求:定义一个方法,在指定的int数组中找出指定的数据第一个的下标

8这个数的下标

[1,2,8,4,5,7,8,7,8,9]

package com.qfedu.a_test;public class Demo3 {public static void main(String[] args) {int[] arr = {1,2,8,3,4,8,9,8};System.out.println(indexOf(arr, 100));}/*** * @param arr   是数组,原始数组 你要在整个数组中找出那个值* @param find  要找的值* @return   是返回的找到值的索引下标*/public static int indexOf (int[] arr, int find) {int index = -1;for (int i = 0; i < arr.length; i++) {if (find == arr[i]) {index = i;break;//终止}}return index;}
}
3.在一个数组中,找出所有的 指定数据的下标位置 【难】

​ 找出所有的下标存倒数组中
​ 8这个数的下标
[1,2,8,4,5,7,8,7,8,9]===>[2,6,8]

package com.qfedu.a_test;import java.util.Arrays;public class Demo4 {public static void main(String[] args) {//在一个数组中,找出所有的 指定数据的下标位置 【难】
//	找出所有的下标存倒数组中
//		8这个数的下标
//[1,2,8,4,5,7,8,7,8,9]//1.先声明一个数组int[] arr = {8, 2, 8, 4, 8, 9,8,78,67,8};int count = 0;//计数的//就找8   8的下标  2,6,8  将他们存到一个新数组中//2.新建一个空的数组,空的数组容量是上一个数组的大小int[] indexes = new int[arr.length];//容器//[0,0,0,0]for (int i = 0; i < indexes.length; i++) {indexes[i] = -1;}//代码走到这一步  indexes = {-1,-1,-1,-1};/***  {8, 2, 8, 4,};*  i=0 0<4 true 8 == arr[0] true indexes[0] = 0; count++ i++*  i=1 1<4 true 8==arr[1] false i++*  i=2 2<4 true 8==arr[2] true indexes[1]=2;count++ i++*  i=3 3<4 true 8==arr[3] false i++*  i=4 4<4 false 循环结束*/for (int i = 0; i < arr.length; i++) {if (8 == arr[i]) {//将i存到新数组中[0,2,-1,-1] //根据索引下标进行存储的indexes[count++] = i;}//此时新数组中indexes = {0,2,-1,-1};//{0,2}}System.out.println(Arrays.toString(indexes));//现在要求有几个索引就是几个不要-1//借助于count这个变量//重新弄一个数组int[] newIndexes = new int[count];for (int i = 0; i < newIndexes.length; i++) {newIndexes[i] = indexes[i];}System.out.println(Arrays.toString(newIndexes));}}
package com.qfedu.a_test;import java.util.Arrays;public class Demo5 {public static void main(String[] args) {int[] arr = {2,3,8,7,8,2,8};int[] arr1 = findAllIndexes(arr, 8);System.out.println(Arrays.toString(arr1));}public static int[] findAllIndexes (int[] arr, int find) {int count = 0;//计数器//这个数组使用存放值的下标的int[] indexes = new int[arr.length];//[0,0,0,0,0]for (int i = 0; i < indexes.length; i++) {indexes[i] = -1;}//[-1,-1,-1,-1,-1...]for (int i = 0; i < arr.length; i++) {if (find == arr[i]) {indexes[count++] = i;}}//[2,4,6,-1,-1,-1...]//再弄一个新的数组 只要2  4  6int[] newIndexes = new int[count];for (int i = 0; i < newIndexes.length; i++) {newIndexes[i] = indexes[i];}return newIndexes;}
}
4. 完成一个方法,替换掉数组中所有元素为0的元素,替换为指定元素 [1,2,3,0,0,0]
package com.qfedu.a_test;import java.util.Arrays;public class Demo6 {public static void main(String[] args) {int[] arr = {1,0,2,0,3};System.out.println(Arrays.toString(replace(arr, 250)));}public static int[] replace (int[] arr, int find) {for (int i = 0; i < arr.length; i++) {if (arr[i] == 0) {arr[i] = find;}}return arr;}}
5.完成一个方法,删除指定下标的元素,要求从删除位置开始,之后的元素整体前移。【难】

​ [1,2,3,4,5,6,7]=>[1,2,4,5,6,7,0]

package com.qfedu.a_test;import java.util.Arrays;public class Demo7 {public static void main(String[] args) {int[] arr = {1,2,3,4,5};//想删除下标为2的/*** i=2 2<4 arr[2]=arr[3] =>{1,2,4,4,5} i++* i=3 3<4 arr[3]=arr[4]=>{1,2,4,5,5} i++* i=4 4<4 false循环结束* arr[4] = 0;*/for (int i = 2; i < arr.length - 1; i++) {arr[i] = arr[i + 1];}arr[arr.length - 1] = 0;System.out.println(Arrays.toString(arr));}}
package com.qfedu.a_test;import java.util.Arrays;public class Demo8 {public static void main(String[] args) {int[] arr = {1,2,3,4,5};System.out.println(Arrays.toString(remove(arr, 1)));}public static int[] remove (int[] arr, int find) {if (find > arr.length - 1) {System.out.println("删除的索引超出了数组的范围");System.exit(0);}for (int i = find; i < arr.length - 1; i++) {arr[i] = arr[i + 1];}arr[arr.length - 1] = 0;return arr;}
}
package com.qfedu.a_test;import java.util.Arrays;public class Demo10 {public static void main(String[] args) {int[] arr = {1,2,3,4,5,6,7,8,10,0};System.out.println(Arrays.toString(add(arr, 3, 799)));}/*** * @param arr   被添加的数组* @param index 添加到数组中下标值* @param number 添加到数组中的值* @return*/public static int[] add (int[] arr, int index, int number) {for (int i = arr.length - 1; i > index; i--) {arr[i] = arr[i - 1];}arr[index] = number;return arr;}}

上午的东西是数组 循环 分支 方法 综合一起的案例

6. 找出数组中最大的元素,放到下标为0的位置

[3,2,4,5,1]=>[5,2,4,3,1]

把最大值放到下标为0的位置,原来下标为0的数据,放到之前最大值的下标位置

package com.qfedu.a_test;import java.util.Arrays;public class Demo11 {public static void main(String[] args) {int[] arr = {3,2,4,5,1};int maxIndex = 0;//接收最大值下标for (int i = 0; i < arr.length; i++) {if (arr[maxIndex] < arr[i]) {maxIndex = i;}}//代码走到这一步 其实就是之前讲过的最大值的下标//最大值的下标是3  要把下标为3的数据放到下标为0的位置//arr[0] = arr[maxIndex];//{5,2,4,5,1}这种方式不行啊//咋办? 借助于中间变量int temp = arr[maxIndex];//先将最大值赋值给temparr[maxIndex] = arr[0];//将第一个数据3 赋值给最大值{3,2,4,3,1}arr[0] = temp;//{5,2,4,3,1}System.out.println(Arrays.toString(arr));}}
package com.qfedu.a_test;import java.util.Arrays;public class Demo12 {public static void main(String[] args) {int[] arr = {89,67,34,90,98,98,34};change(arr);}public static void change (int[] arr) {int maxIndex = 0;for (int i = 0; i < arr.length; i++) {if (arr[maxIndex] < arr[i]) {maxIndex = i;}}System.out.println(maxIndex);//交换int temp = arr[maxIndex];arr[maxIndex] = arr[0];arr[0] = temp;System.out.println(Arrays.toString(arr));}}
7.在上一道题的基础上,不考虑下标为0的元素。找出数组中最大的元素,放到下标为1的位置
package com.qfedu.a_test;import java.util.Arrays;public class Demo13 {public static void main(String[] args) {int[] arr = {3, 2, 4, 5, 1 };int maxIndex = 0;// 接收最大值下标for (int i = 0; i < arr.length; i++) {if (arr[maxIndex] < arr[i]) {maxIndex = i;}}// 代码走到这一步 其实就是之前讲过的最大值的下标// 最大值的下标是3 要把下标为3的数据放到下标为0的位置// arr[0] = arr[maxIndex];//{5,2,4,5,1}这种方式不行啊// 咋办? 借助于中间变量int temp = arr[maxIndex];// 先将最大值赋值给temparr[maxIndex] = arr[0];// 将第一个数据3 赋值给最大值{3,2,4,3,1}arr[0] = temp;// {5,2,4,3,1}System.out.println(Arrays.toString(arr));//找2   4   3  1  中的最大值,然后把最大值放到下标为1的位置//{5,4,2,3,1}int maxIndex1 = 1;for (int i = 1; i < arr.length; i++) {if (arr[maxIndex1] < arr[i]) {maxIndex1 = i;}}//交换位置int temp1 = arr[maxIndex1];arr[maxIndex1] = arr[1];arr[1] = temp1;System.out.println(Arrays.toString(arr));}
}
package com.qfedu.a_test;import java.util.Arrays;public class Demo14 {public static void main(String[] args) {int[] arr = {3, 2, 4, 5, 1 };change1(arr);}public static void change1 (int[] arr) {int maxIndex = 0;// 接收最大值下标for (int i = 0; i < arr.length; i++) {if (arr[maxIndex] < arr[i]) {maxIndex = i;}}// 代码走到这一步 其实就是之前讲过的最大值的下标// 最大值的下标是3 要把下标为3的数据放到下标为0的位置// arr[0] = arr[maxIndex];//{5,2,4,5,1}这种方式不行啊// 咋办? 借助于中间变量int temp = arr[maxIndex];// 先将最大值赋值给temparr[maxIndex] = arr[0];// 将第一个数据3 赋值给最大值{3,2,4,3,1}arr[0] = temp;// {5,2,4,3,1}System.out.println(Arrays.toString(arr));//找2   4   3  1  中的最大值,然后把最大值放到下标为1的位置//{5,4,2,3,1}int maxIndex1 = 1;for (int i = 1; i < arr.length; i++) {if (arr[maxIndex1] < arr[i]) {maxIndex1 = i;}}//交换位置int temp1 = arr[maxIndex1];arr[maxIndex1] = arr[1];arr[1] = temp1;System.out.println(Arrays.toString(arr));}}

2.排序

[3,2,1,4,5]=>从小到大排序

2.1选择排序

原理:找到最小值的索引,然后和第1个数据进行交换。再找除了第一个数据以外的最小值的索引。然后和第二个数据交换

package com.qfedu.b_sort;import java.util.Arrays;public class Demo1 {public static void main(String[] args) {//选择排序int[] arr = {3,4,1,5,2};/*** i=0 0<4 true minIndex=0  * 			进入内层的for循环* 			j=0 0<5 true arr[0] >arr[0]false j++* 			j=1 1<5 true arr[0] >arr[1] false j++* 			j=2 2<5 true arr[0]>arr[2]true minIndex=2 j++* 			j=3 3<5 true arr[2]>arr[3]fasle j++* 			j=4 4<5 true arr[2]>arr[4] fasle j++* 			j=5 5<5fasle循环结束* 			执行交换代码* 			temp = arr[2]=1* 			arr[2] = arr[0] {3,4,3,5,2}* 			arr[0] = 1  {1,4,3,5,2} i++* i=1 1<4 true minIndex =1* 					......* */for (int i = 0; i < arr.length - 1; i++) {//控制的是轮数int minIndex = i;for (int j = i; j < arr.length; j++) {//遍历咱们的数据找到最小值的索引的if (arr[minIndex] > arr[j]) {minIndex = j;}}//交换位置int temp = arr[minIndex];arr[minIndex] = arr[i];arr[i] = temp;}System.out.println(Arrays.toString(arr));}}
2.2冒泡排序

从小到大排序

原理:比较两个相邻的数据,如果左边比右边元素大就交换位置。如果左边比右边小,就不变

package com.qfedu.b_sort;import java.util.Arrays;public class Demo2 {public static void main(String[] args) {//冒泡 排序和索引没有关系int[] arr = {1,5,2,3};for (int i = 0; i < arr.length - 1; i++) {//最内层的循环两两比较交换位置//4-1-i=>i=0  第1轮   3次//4-1-i=>i=1 第2轮   2次//4-1-i=>i=2 第3轮  1次for (int j = 0; j < arr.length - 1 - i; j++) {if (arr[j] > arr[j + 1]) {//交换位置int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}System.out.println(Arrays.toString(arr));}
}

作业:

1.把今天的东西理解为主,该写注释的写注释
2.自学  Java快速排序杨辉三角二分法查找算法
3.一套卷子自己名字交给组长

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

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

相关文章

年日历实现, 2、维护工作日和休息日, 3、初始化法定节假日

you:请帮我用vue2实现如下功能&#xff1a;1、年日历实现&#xff0c; 2、维护工作日和休息日&#xff0c; 3、初始化法定节假日 当你想要使用Vue.js 2实现年度日历&#xff0c;并维护工作日和休息日以及初始化法定节假日时&#xff0c;你可以考虑以下步骤。 首先&#xff0c…

全志图形引擎 以 F1C200s 为例介绍

全志图形引擎的思路在很多自家芯片上是大差不差的。这些芯片包括但不限于:F1C100s、F1C200s、V3S、A64、T113、H8、H3、A83。 F1C200s 和 F1C100s 相差极小,仅集成内存大小有所差别。 下面以 F1C200s 为例讲解全志图形引擎。 F1C200s的显示系统由以下四部分组成: 时序控制…

使用pandas按照商品和下单人统计下单数据

目录 一&#xff1a;需求描述 二&#xff1a;代码实现 三&#xff1a;注意事项 一&#xff1a;需求描述 最近运营那边给到一个excel表格&#xff0c;是一个小程序用户的下单数据&#xff0c;要以商品为维度&#xff0c;统计用户下单情况&#xff0c;主要是下单的商品总金额&…

多进程 案例

from multiprocessing import Process, Queueclass MyProcess(Process):def __init__(self, q, i):super().__init__()self.q qself.i idef run(self):print(子进程%s 开始put数据 % self.i)self.q.put(我是%s 通过Queue通信 % self.i)self.q.put(我是%s 通过Queue通信 % 2)i…

SpringBoot-Dubbo-Zookeeper

Apache Dubbo&#xff1a;https://cn.dubbo.apache.org/zh-cn/overview/home/ 依赖 <!--dubbo--> <dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.3</versio…

CMake+大漠插件的应用开发——处理dm.dll,免注册调用大漠插件

文章目录 CMake大漠插件的应用开发——处理dm.dll&#xff0c;免注册调用大漠插件简介环境项目结构配置编译环境编码-直接调用 dll编码-生成tlh文件&#xff0c;便于提示 CMake大漠插件的应用开发——处理dm.dll&#xff0c;免注册调用大漠插件 简介 网上有一种使用方式是&am…

Navicat连接不上虚拟机中linux的dockers创建的mysql

说明&#xff1a;这个问题可能只是我的个人问题&#xff0c;记录一下吧。当发现这个问题的时候&#xff0c;去网上搜素了一下&#xff0c;搜到的文章基本上都是通过在mysql中设置允许远程访问解决的&#xff0c;然后我也跟着尝试了一下&#xff0c;问题并没有解决。后面就乱七八…

golang学习-golang结构体和Json相互转换

1、结构体转为json对象 v, _ : json.Marshal(student) jsonStr : string(v) // 结构体转为json对象 2、json字符串转为结构体 var s1 Student err : json.Unmarshal([]byte(str), &s1) //json 字符串转为结构体 3、结构体标签 表示的是转换为json对象时&#xff0c;ID字段…

allegro PCB设计心得笔记(二) PCB板框设计心得

Cadence Allegro软件设计PCB板框时&#xff0c;使用Add -> line&#xff0c;在Option选择Board Geometry/Outline&#xff0c;根据PCB需要输入对应坐标&#xff0c;设计好板框。 使用Z-Copy命令设计Route Keepin和Package Keepin时&#xff0c;需要先使用使用Shape -> Co…

【Python】Python语言 3小时速通(有C语言基础版)

python从入门到实践 变量 message"hello world"并不需要指出变量类型 方法 tittle()#以首字母大写的形式输出单词upper()#全部大写输出lower()#全部小写输出存储数据时经常使用lower&#xff0c;因为无法确保数据是大写还是小写 rstrip()#输出删除字符串尾部多余…

YOLOv5涨点改进:多层次特征融合(SDI),小目标涨点明显,| UNet v2,比UNet显存占用更少、参数更少

💡💡💡本文全网独家改进:多层次特征融合(SDI),能够显著提升不同尺度和小目标的识别率 💡💡💡在YOLOv5中如何使用 1)iAFF加入Neck替代Concat; 💡💡💡Yolov5/Yolov7魔术师,独家首发创新(原创),适用于Yolov5、Yolov7、Yolov8等各个Yolo系列,专栏文…

RabbitMQ 的基本概念

一 MQ 的基本概念 1 MQ概述 MQ全称 Message Queue&#xff08;消息队列&#xff09;&#xff0c;是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。消息队列就是所谓的存放消息的队列。 消息队列解决的不是存放消息的队列的⽬的&#xff0c;解决的是通信问…

三、GCC编译:链接

代码准备 main.c extern int shared; extern void func(int *a, int *b); int main(){int a 100;func(&a, &shared);return 0; }func.c int shared 1; int tmp 0; void func(int *a, int *b){tmp *a;*a *b;*b tmp; }静态链接 编译 gcc -static -fno-stack-p…

VB6 VBA asp的RecordSet.GetRows方法

1.VBA调用ADO执行SQL语句获取查询结果&#xff0c;通过RecordSet.GetRows方法获取到的数组是行列转置后的数组。 2.如果通过application.transpose对RecordSet.GetRows方法获取到的数组再进行转置&#xff0c;如果报错“运行时错误438&#xff1a;对象不支持该属性或方法”&am…

TypeScript学习笔记、鸿蒙开发学习笔记

变量定义方式 # 变量声明 let msg: string douzi console.log(msg) let num: number 20 console.log(num) let end: boolean true console.log("end" end) let a: any 10 a douzi console.log(a) let p {name:"douzi",age:20} console.log(p.name)…

hls转流服务的nginx配置和一些脚本

前言 当今&#xff0c;流媒体服务已成为互联网中不可或缺的重要组成部分。HLS&#xff08;HTTP Live Streaming&#xff09;作为一种流媒体传输协议&#xff0c;被广泛应用于视频直播、点播等应用场景中。而Nginx作为一款高性能的Web服务器&#xff0c;也可以被用于构建HLS转流…

《每天十分钟》-红宝书第4版-集合引用类型(二)

接着奏乐接着抄&#xff0c;续着上篇的数组 迭代器方法 const a ["zhangsan", "lisi", "wangwu"]; // 因为这些方法都返回迭代器&#xff0c;所以可以将它们的内容 // 通过 Array.from()直接转换为数组实例 const aKeys Array.from(a.keys(…

cmake-将源文件编译为可执行文件

文章目录 准备工作创建cmake文件编译源代码需要的文件不在同一个文件夹的情况 准备工作 首先我们准备三个文件 add.h int add(int a,int b);add.cpp int add(int a,int b) {return ab; }main.cpp #include "add.h" #include <iostream> int main() {in…

Multi-Concept Customization of Text-to-Image Diffusion——【代码复现】

本文是发表于CVPR 2023上的一篇论文&#xff1a;[2212.04488] Multi-Concept Customization of Text-to-Image Diffusion (arxiv.org) 一、引言 本文主要做的工作是对stable-diffusion的预训练模型进行微调&#xff0c;需要的显存相对较多&#xff0c;论文中测试时是在两块GP…

ssh远程登录协议

目录 一、ssh协议定义及特点 &#xff08;一&#xff09;ssh协议简介 &#xff08;二&#xff09;ssh协议的主要特点 二、ssh传输原理 三、sshd服务 &#xff08;一&#xff09;配置文件 &#xff08;二&#xff09;基本用法 1.直接连接 2.连接指定用户 3.指定端口号…