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 ...
随机推荐
- Java中File类的使用介绍
1.创建File对象的几种方式 import java.io.File; public class MyFile { public static void main(String[] args) { ...
- Linux下安装MySQLdb模块(Python)
一.MySQLdb-python模块 https://pypi.python.org/pypi/MySQL-python ` 二.安装依赖包 yum -y install python-devel m ...
- ubuntu介绍以及使用
Ubuntu(友帮拓.优般图.乌班图)是一个以桌面应用为主的开源GNU/Linux操作系统,Ubuntu 是基于Debian GNU/Linux,支持x86.amd64(即x64)和ppc架构,由全球 ...
- Builder(构造者)
Builder(构造者) <?php class Product { private $name; public function setName($name) { $this->name ...
- nginx报错 too many open files in system
系统进不去了,用ssh连接服务器也非常慢,负载均衡显示后端连接异常,重启mysql数据库,发现经常重启,或者直接关机,访问页面也访问不到. http://www.51testing.com/html/ ...
- Python2.6.6升级2.7.3
Python2.7替换2.6: 1.下载Python-2.7.3 #wget http://python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2 2.解压 ...
- BZOJ 3939 [Usaco2015 Feb]Cow Hopscotch ——线段树 CDQ分治
显然dp[i][j]=ps[i-1][j-1]-sigma(dp[k<i][l<j],a[i][j]=a[k][l]) 考虑对于每一种颜色都开一颗区间线段树,但是空间不够. 所以我们可以动 ...
- BZOJ 1095 [ZJOI2007]Hide 捉迷藏 ——动态点分治
[题目分析] 这题好基啊. 先把分治树搞出来.然后每个节点两个堆. 第一个堆保存这个块里的所有点(即分治树中的所有儿子)到分治树上的父亲的距离. 第二个堆保存分治树子树中所有儿子第一个堆的最大值. 建 ...
- CF dp 一句话解题
wyq说刚入门oi 或是遇到瓶颈的时候就刷DP吧,虽然觉得这么刷CF题有点浪费,但是还是挺爽的,按照solved排序做的,前面的题都挺水的(忘记记录了混蛋),就不写了,从5C开始写解题 CF5 C. ...
- 互不侵犯King(bzoj 1087)
Description 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. Input 只有一行,包 ...