黑马程序员_Java基础_04数组main函数args详解、数组排序、二分查找实例

百度API实现人流量数量检测(动态) 百度的这个API还挺好用的,对与不追求高精度的人来说非常适用,结合他官方给的文档,极易上手。 需要做的就是通过API Key和Secret Key获取的access_token。 然后稍微修改下代码就行,但是他给的代码并没有直接从摄像头获取视频,而是读取一个文件夹,那么就需要自己先对摄像头的输出视频进行处理。 识别结果如下,"person_num"是当前画面的人数,in是累计进入的人数,out是累计走出去的人数。 他这个有个缺点就是返回值里边并没有实时返回in和out的值,而是都是0,但是这个图片上有,图片 阅读详情
-------  android培训 、 ios培训 、期待与您交流! ----------
一、main函数args详解
public class TestArray{
 public static void main(String args[]){
  int y=new Integer("3");    //这里如果 用 int[] y = new Integer(args.length); ,会提示不兼容的类型,原因是将integer 构造方法的值直接赋值给数组, 而Integer没有返回类型为数组的 构造方法,所以需要格外注意,追根到底还是定义数组的格式问题
  int a[]=new int[args.length]; 
  for(int i=0;i<args.length;i++){
   a[i]=Integer.parseInt(args[i]);
  }
  print(a);
  System.out.println(y);
  selectSort(a);
  print(a);
 }
 static void print(int[] a){
  for(int i=0;i<a.length;i++){
   System.out.print(a[i]+" ");
  }
  System.out.println();
 }
 static void selectSort(int[] a){
  for(int i=0;i<a.length;i++){
   for(int j=i+1;j<a.length;j++){
    if(a[j]<a[i]){
     int z=a[j];
     a[j]=a[i];
     a[i]=z;
    }
   }
  }
 }
}

以上版本还存在优化的空间,以下是优化过得程序
//优化版本
public class TestArrayOptimize{
 public static void main(String args[]){
  int y=new Integer("3");
  int a[]=new int[args.length];
  for(int i=0;i<args.length;i++){
   a[i]=Integer.parseInt(args[i]);
  }
  print(a);
  System.out.println(y);
  selectSort(a);
  print(a);
 }
 static void print(int[] a){
  for(int i=0;i<a.length;i++){
   System.out.print(a[i]+" ");
  }
  System.out.println();
 }
private static void selectSort(int[] a){   //这里可以将这个方法限定为内部访问
int k,temp;   //1
for(int i=0;i<a.length;i++){
k=i;
for(int j=k+1;j<a.length;j++){  / /2
 if(a[j]<a[k]){
 k=j;
 }
}
if(a[i]!=a[k]){    //这里还需要有点注意的地方,就是比较 i与k的值比较,还是比较其下标的数组值,都可以,即 可以写成 if(i!=k)这样比较也可以,而且更好
temp=a[k];
a[k]=a[i];
a[i]=temp;
}
}
}

以上这个版本主要做了两点优化
1、只在栈内存分配一次变量
2、排序时,从找到的更小的数往后继续比较大小,直到找到最小的数,然后与前面的数对调位置,完成内部循环,依次类推完成外部寻循环,直到完成比较。

二、折半查找法
public class BinarySearch{
 public static void main(String[] args){
  //int[] arr=new int[1,2,3,4,5,8,12,14,15,17,20,24];
   int[] arr={1,2,3,4,5,8,12,14,15,17,20,24};
  System.out.println(searchNum(arr,12));
  System.out.println(binarySearch(arr,24)); //输出结果为 -1       —————— ①
  System.out.println(binarySearch(arr,1)); //输出结果为0
 }
 //static void searchNum(int[] a,int num){
 public static int searchNum(int[] a,int num){
  for(int i=0;i<a.length;i++){
   if(a[i]==num){
    return i;
   }
  }
  return -1;
 }
 public static int binarySearch(int[] a,int num){
  if(a.length==0) return -1;
  int startPos=0;
  int endPos=a.length-1;//一开始这里忘记减去1,结果返回值为就返回-1。
  int index=(endPos+startPos)/2;
// for(int i=startPos;i<endPos;i++){
// if(a[i]==num){
// return i;
// }
// if(a[i]>num){
// startPos=index+1;
// }
// if(a[i]<num){
// endPos=index-1;
// }
// }      ———————————— ①
  while(startPos<endPos){     //这里如果少了一个=号 ,——————  ②
   if(a[index]==num){
     return index;
   }
   if(a[index]<num){
    startPos=index+1;
   }
   if(a[index]>num){
    endPos=index-1;
   }
    index=(startPos+endPos)/2;———————————————③
  }
  return -1;
 }
}

总结:
①一开始使用for循环想完成这个实例,但是失败了,需要思考原因,进一步查找资料
②使用while循环控制时,起始位置与结束位置应该可以相等,不然如果查找的数是最后一个数,会查找不到,返回-1;
③使用while循环时,需要记得加上这条语句,不然就会陷入死循环,无限循环下去  


openlayers:实现在连续更改时间维度时如何平滑地重新加载层 (附完整源码) openlayers:实现在连续更改时间维度时如何平滑地重新加载层 (附完整源码) 阅读详情

相关推荐

ESP32S3编译micropython固件

编译ESP32芯片的micropython固件

m0_73253860的博客 2553

二分查找算法(Java实现)

①适用于经常查找的、但是不变的(增删)的有序列表。   ②原理图 ③测试代码: //二分查找测试类 //注意:二分查找必须用在有序列表中进行二分查找 public class BinaryChopTest {    public static void main(String[] args) { int[] arrays = {1, 6, 10, 11, 12...

tree_ifconfig的博客 1万+

Matlab激活失败?手把手教你解决License checkout failed问题(附详细截图)

本文针对Matlab激活后出现“License checkout failed”错误的常见问题,提供了详细的解决方案。核心在于精准定位并正确填写Windows系统用户名,而非计算机名或账户全名。文章通过分步截图和命令指引,手把手教你使用`whoami`命令获取正确信息,并重新运行激活程序,从根本上解决因用户名填写错误导致的许可检查失败问题。

weixin_29062823的博客 572

java顺序查找和二分查找

1.顺序查找 public static int find(int[] arr,int toFind){ for(int i=0;i<arr.length;i++){ if(arr[i]==toFind){ return i;//找到返回下标 } } return -1;//表示没找到 } 2.二分查找 public static int ...

Mainhxj的博客 211

cesium自定义指南针

项目需要一个指南针,用鼠标按住旋转指针,会让3d地图旋转,点击中心点重置方位。当然可以使用插件cesium-navigation-es6,但是样式不好修改,所以我自定义了一个指南针。

weixin_47017648的博客 750

从SD更新字库到FLASH,再用LCD显示

用Flash当字库存储载体。思路是先将要用到的字库文件存在SD卡,然后存储到Flash,LCD显示时候从Flash中读取 还挺顺利的,移植的原子的程序,自己稍加修改,主要是我的液晶屏函数,Flash读写函数,还有存储文件的flash地址不一样。一晚上搞定,大小字体都OK。挺高兴哈哈。这几天忙工作事情有点耽搁了学习进展嘿嘿 在text.c的showstr函数中char的字体颜色随意设置的,可以显...

weixin_30505751的博客 914

全网最强JavaWeb笔记 | 万字长文爆肝JavaWeb开发——day04_SpringBootWeb入门

万字长文爆肝黑马程序员2023最新版JavaWeb教程。这套教程打破常规,不再局限于过时的老套JavaWeb技术,而是与时俱进,运用的都是企业中流行的前沿技术。笔者认真跟着这个教程,再一次认真学习一遍JavaWeb教程,温故而知新,对JavaWeb开发也有了更加深入细致的了解。因此笔者做了全网最全面详细的学习笔记,通篇图文并茂,

qq_45832461的博客 1494

基于WEKWS模型的语音唤醒关键词识别

本文所使用的模型网络结构继承自论文《Compact Feedforward Sequential Memory Networks for Small-footprint Keyword Spotting》,文中研究了将低秩矩阵分解与传统FSMN相结合的紧凑型前馈顺序记忆网络(cFSMN)用于远场关键字检测任务。

YuZhou的博客 6596

全网最强MyBatisPlus教程 | 万字长文爆肝MyBatisPlus

MyBatisPlus是基于MyBatis的增强工具,旨在简化开发和提高效率。文章介绍了基于SpringBoot整合MyBatisPlus的入门案例,包括创建数据库、配置依赖、编写实体类和Dao接口等步骤。MyBatisPlus通过继承BaseMapper接口,无需编写SQL即可实现标准CRUD操作,大幅简化开发流程。同时还介绍了MyBatisPlus的官方文档和定位,强调其作为MyBatis的增强工具而非替代品的角色。文中包含详细的操作步骤和配置示例,适合初学者快速上手使用MyBatisPlus。

qq_45832461的博客 2309

SAP CBC 集成质量系统初始化接入实战指南

摘要 本文探讨了SAP S/4HANA Cloud Public Edition项目中质量系统的初始接入过程。质量系统并非开箱即用,而是需要经过SAP Central Business Configuration(CBC)的Scope and Organizational Structure阶段部署后才能具备完整功能。文章重点分析了几个关键环节:CBC里程碑确认的时机选择、Identity Authentication的初始管理员设置、Business Role Template的创建规范等。实施过程中需特

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1407

计算机视觉教程2-3:图解双线性插值算法&最近邻插值算法

提出此算法的背景是基于图片的缩放,在图片缩放的过程中,实质上就是将原图像像素矩阵像素值,填到目标图像像素矩阵中,目标图像像素矩阵可能比原图像像素矩阵大(图片放大),也可能小(图片缩小)。我们假设图片的宽(WidthWidthWidth)和高(HeightHeightHeight)是按同比例缩放的,那么 srcXsrcWidth=dstXdstWidth\frac{srcX}{srcWidth}= \frac{dstX}{dstWidth}srcWidthsrcX​=dstWidthdstX​ ...

FRIGIDWINTER的博客 7282

EduRAG智能回答项目V1.0

本文介绍了基于企业私有数据构建RAG(检索增强生成)系统的完整流程。主要内容包括: 项目背景:针对大模型知识局限性和"幻觉"问题,提出两种解决方案——垂直领域微调和RAG问答系统,分析各自的优缺点及适用场景。 技术工具: 使用Ollama管理本地大模型 采用LangChain框架简化LLM应用开发 利用Milvus向量数据库存储和检索非结构化数据 系统实现: MySQL问答系统:基于BM25算法实现高频问答对检索 RAG系统:包含文档处理、向量存储、查询分类和策略选择等模块。

专注前端开发领域,深耕 Python AI Agent应用开发,热爱探索 Web 与人工智能的前沿技术。 267

115网页版VR模式终于能用了!电脑直接播放vr视频沉浸感满满 115vr播放 无需vr头盔播放vr视频 在线vr播放器 115网盘360度视频播放方法 115全景视频播放教程

油猴 + 脚本让你网页端直接开启 VR 模式支持 360 视频拖动视角,非常沉浸适合电脑设备直接用无需vr头盔也能轻松畅看vr视频,希望也能帮到你。如果你也被 115 的限制搞烦了,不妨试试这招。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 5711

黑马程序员_交通灯系统的设计、分析与实现

一、需求分析         模拟实现十字路口的交通灯管理系统逻辑,具体需求如下:          异步随机生成按照各个路线行驶的车辆。          例如:        由南向而来去往北向的车辆 ---- 直行车辆        由西向而来去往南向的车辆 ---- 右转车辆        由东向而来去往南向的车辆 ---- 左转车辆  信号灯忽略黄灯,只考虑

besidescrazy的专栏 1051

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

黑马程序员_Java基础_01环境安装、类编译常见错误、标识符、注释

java 环境安装需要下载jdk(java开发工具包),然后配置系统环境变量,下面是详细的说明 一、下载并安装jdk     1、 jdk(java开发工具包)包含了开发环境和运行环境。     2、可以从oracle公司官方网站下载java的JDK开发环境     3、具体的安装过程相对比较简单,基本就是下一步,需要注意的一点是在安装过程中,可以选择自定义更改安装路径

besidescrazy的专栏 972

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

黑马程序员_10字节流、字符流、转换流、控制流、数据流、字节数组流

一、流简介 按数据流的方向不同分:输入流 输出流 按处理数据单位不同分:字节流 字符流 按照功能不同可以分为: 节点流:InputStream OutputStream 直接跟数据源相连接 ,节点流为可以从一个特定的数据源(节点)读写数据(如:文件、内存) 处理流:处理流是“连接”在已经存在的流(节点流或处理流)之上,通过对数据

besidescrazy的专栏 845

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

黑马程序员_Java基础_02常量、变量、数据类型、运算符、语句、程序执行过程

一、常量      概念:常量就是计算机不会变化的数值。      整数常量:表现形式有四种。 二进制、八进制、十进制、十六进制      八进制 :0开头。每三个二进制位代表一个八进制位。      十六进制:0x开头。每四个二进制为代表一个十六进制位。 int x = 60;  十进制表示形式 x = 0x3c;  十六进制表示形式     进制越

besidescrazy的专栏 770

黑马程序员_Java基础_03面向对象思想(对象转型注意事项、多态、抽象类、final关键字等)

------- android培训、ios培训、期待与您交流! ----------

besidescrazy的专栏 702

黑马程序员_13客户端与服务端互发信息

//客户端代码 import java.io.*; import java.net.*; public class TalkClient{  public static void main(String[] args) throws Exception{   //定义连接服务器的socket流   Socket s = new Socke

besidescrazy的专栏 671

黑马程序员_08HashSet实例

一、HashSet实例1 import java.util.*; public class TestHashSet{  public static void main(String args[]){   Set s=new HashSet();   s.add("hello");

besidescrazy的专栏 635

黑马程序员_17增强For循环

一、增强For循环特征及举例 语法: for ( type 变量名:集合变量名 ) { … } 注意事项: 迭代变量必须在( )中定义! 应用对象: 可以对于集合变量进行循环 也可以对数组 或者可以是实现了Iterable接口的集合类  举例:  public static int add(int x,

besidescrazy的专栏 622

黑马程序员_19枚举

------- android培训、ios培训、期待与您交流! ---------- 一、为什么要有枚举         问题:要定义星期几或性别的变量,该怎么定义?                 假设用1-7分别表示星期一到星期日,但有人可能会写成int weekday = 0;                 或即使使用常量方式也无法阻止意外。         枚举就是要让

besidescrazy的专栏 617

黑马程序员_07常用类String 、StringBuffer、File类以及递归调用

一、输出一个字符串中出现某个单词的次数(主要用到String类的方法) public class TestString{  public static void main(String args[]){   String s="javascriptsfdsfsdjavasdfsdfsdfjavasfsdfdsfsdfsdfdsjavasdfsdfsdfsdsdfsdjav

besidescrazy的专栏 610

黑马程序员_15静态导入

一、静态导入简介 import语句可以导入一个类或某个包中的所有类 import static语句导入一个类中的某个静态方法或所有静态方法 语法举例: import static java.lang.Math.sin; import static java.lang.Math.*; 二、静态导入练习 使用求两个数的最大值和相减结果的绝对值进行举例,这个例子

besidescrazy的专栏 593

黑马程序员_09HashMap实例

一、HashMap实例说明:添加、查找操作 import java.util.*; public class TestHashMap{  public static void main(String args[]){   HashMap m1=new HashMap();   HashMap m2

besidescrazy的专栏 589

黑马程序员_14Udp实例

//客户端程序 import java.net.*; import java.io.*; public class UdpClient{  public static void main(String[] args) throws Exception{     long l = 10000L;

besidescrazy的专栏 588
上一篇: 黑马程序员_Java基础_03面向对象思想(对象转型注意事项、多态、抽象类、final关键字等)
下一篇: 黑马程序员_Java基础_05数组数组拷贝、数据常见问题
孔子云
博客等级 码龄15年 1粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值