java开始到熟悉62
(说明:昨天网络出现了问题导致昨天的没有按时上传,这篇算是昨天的,今天晚上照常上传今天的内容)
本次主题:数组拷贝、排序、二分法
1、数组拷贝
a.java.lang中System
类包含一些有用的类字段和方法。它不能被实例化。
在 System
类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。
public static void arraycopy(Object src, int srcPos, Object dest, int destPos,
int length)
- 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。从
src
引用的源数组到dest
引用的目标数组,数组组件的一个子序列被复制下来。被复制的组件的编号等于length
参数。源数组中位置在srcPos
到srcPos+length-1
之间的组件被分别复制到目标数组中的destPos
到destPos+length-1
位置。
b.java.util中的Arrays类,此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。
toString
public static String toString(short[] a)
- 返回指定数组内容的字符串表示形式。字符串表示形式由数组的元素列表组成,括在方括号("[]")中。相邻元素用字符 ", "(逗号加空格)分隔。这些元素通过 String.valueOf(short) 转换为字符串。如果 a 为 null,则返回 "null"。
c.打印数组
package array; import java.util.Arrays; public class array {
public static void main(String[] args)
{
int[] a={,,,,,,};
System.out.println(a);
System.out.println(Arrays.toString(a));
Arrays.sort(a);
System.out.println(Arrays.toString(a));
}
}
运行结果:
[I@19836ed
[1, 2, 43, 12, 5, 65, 23]
[1, 2, 5, 12, 23, 43, 65]
直接打印a结果可能是地址,[I代表是一个int数组,‘@’后面跟的是数组所在的地址。
d.对象也可以排序,不过要自己定义compareTo方法,这个放到后面容器的地方记录。
2,数组排序
冒泡排序
package array; import java.util.Arrays; public class maopao {
public static void main(String[] args)
{
int[] a={,,,,,,,,};
sort(a);
System.out.println(Arrays.toString(a));
}
public static void sort(int[] a)
{
int i,j;
int temp=;
for(i=;i<a.length;i++)
{
for(j=;j<a.length--i;j++)
{
if(a[j]>a[j+])
{
temp=a[j];
a[j]=a[j+];
a[j+]=temp;
}
}
}
} }
运行结果: [1, 2, 3, 4, 5, 6, 9, 13, 23]
3、二分法查找
二分法查找前提必须是有序的(升序或降序)
package array; import java.util.Arrays; /**
* 二分法查找
* @author acer
*
*/
public class binarysearch {
public static void main(String[] args)
{
int searchmath=;//查找的数
int[] a={,,,,,,,,,,};
System.out.printf("普通查找%d的循环次数%d\n",searchmath,generalLoop(a,searchmath));
System.out.printf("二分查找%d的循环次数%d",searchmath,binarySearch(a,searchmath));
}
public static int generalLoop(int[] a,int searchmath)
{
int i;
int searchcount=;
for(i=;i<a.length;i++)
{
searchcount++;
if(a[i]==searchmath)
break;
}
return searchcount;
}
public static int binarySearch(int[] a,int searchmath)
{
Arrays.sort(a);//首先对数组进行排序
System.out.println("数组已排序");
int i=;
int index=;
int start=;//开始位置
int end=a.length-;//结束位置
int searchcount=;
for(i=;i<a.length;i++)
{
searchcount++;
index=(start+end)/;
if(a[index]<searchmath)
{
start=index;
}
else if(a[index]>searchmath)
{
end=index;
}
else
{
break;
}
}
return searchcount;
}
}
运行结果:
普通查找65的循环次数10
数组已排序
二分查找65的循环次数1
java开始到熟悉62的更多相关文章
- Effective Java 第三版——62. 当有其他更合适的类型时就不用字符串
Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...
- 20165304实验一java开发环境熟悉
实验报告封面 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:李松杨 学号:20165304 指导教师:娄嘉鹏 实验日期:2018年4月2日 实验时间:13:45 - 15:25 实 ...
- 20165320 实验一 java环境的熟悉
实验内容与步骤 一.java开发环境的熟悉 1.建立一个有关自己学号的目录 2.在当前文件下编译一个带包Hello.java文件 3.代码内容 package sq; import java.util ...
- java开始到熟悉100-102
本次内容:arraylist() 1. package list; import java.util.ArrayList; import java.util.Date; import java.uti ...
- java基础:熟悉3种内部类的写法,重点匿名内部类的使用
一.内部类定义 内部类(nested classes),面向对象程序设计中,可以在一个类的内部定义另一个类.嵌套类分为两种,即静态嵌套类和非静态嵌套类.静态嵌套类使用很少,最重要的是非静态嵌套类,也即 ...
- [原创]java WEB学习笔记62:Struts2学习之路--表单标签:form,表单标签的属性,textfield, password, hidden,submit ,textarea ,checkbox ,list, listKey 和 listValue 属性,select ,optiongroup ,checkboxlist
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Android(java)学习笔记62:继承Thread类创建线程类
package cn.itcast_02; /* * 该类要重写run()方法,为什么呢? * 不是类中的所有代码都需要被线程执行的. * 而这个时候,为了区分哪些代码能够被线程执行,java提供了T ...
- Java基础知识强化62:Arrays工具类之概述和使用
1. Arrays工具类: Arrays这个类包含操作数组(比如排序和查找)的各种方法. 2. Arrays的方法: (1)toString方法:把数组转成字符串 public static Stri ...
- java代码示例(6-2)
创建Customer.java /*** * 需求分析:创建客户类 * @author chenyanlong * 日期:2017/10/15 */ package com.hp.test06; pu ...
随机推荐
- The North American Invitational Programming Contest 2018 H. Recovery
Consider an n \times mn×m matrix of ones and zeros. For example, this 4 \times 44×4: \displaystyle \ ...
- python 五——自定义线程池
内容概要: 1.low版线程池 2.绝版线程池 1.low版线程池 设计思路:运用队列queue 将线程类名放入队列中,执行一个就拿一个出来 import queue import threading ...
- 三、harbor部署之SSL
1 签名证书与自签名证书 签名证书:由权威颁发机构颁发给服务器或者个人用于证明自己身份的东西. 自签名证书:由服务器自己颁发给自己,用于证明自己身份的东西,非权威颁发机构发布. 2 openssl简介 ...
- 四丶人生苦短,我用python【第四篇】
1 基本数据类型 数字 int 字符串 str 布尔值 bool 列表 list 元组 tuple 字典 dict >>>type( ...
- python+selenium 鼠标事件操作
一.前言 除了可以使用 click( ) 来模拟鼠标的单击操作,现在Web产品中还提供了更丰富的鼠标交互方式,例如鼠标右键.双击.悬停.拖动等功能,在WebDriver中,将这些关于鼠标操作的方法都封 ...
- 面试准备——JVM相关
https://www.cnblogs.com/goody9807/p/6511480.html https://www.cnblogs.com/java1024/p/8594784.html htt ...
- Codeforces Round #432 (Div. 2, based on IndiaHacks Final Round 2017)
昨晚打得小号,虽然很菜,可是还是涨了些rating A. Arpa and a research in Mexican wave time limit per test 1 second memory ...
- ffmpeg常见名词解析
scan_all_pmts, 扫描全部的ts流的"Program Map Table"表.
- [BZOJ2523][Ctsc2001]聪明的学生
[BZOJ2523][Ctsc2001]聪明的学生 试题描述 一位教授逻辑学的教授有三名非常善于推理且精于心算的学生A,B和C.有一天,教授给他们三人出了一道题:教授在每个人脑门上贴了一张纸条并告诉他 ...
- Autorelease对象什么时候释放?
Autorelease机制是iOS开发者管理对象内存的好伙伴,MRC中,调用[obj autorelease]来延迟内存的释放是一件简单自然的事,ARC下,我们甚至可以完全不知道Autorelease ...