(说明:昨天网络出现了问题导致昨天的没有按时上传,这篇算是昨天的,今天晚上照常上传今天的内容)

本次主题:数组拷贝、排序、二分法

1、数组拷贝

a.java.lang中System 类包含一些有用的类字段和方法。它不能被实例化。

System 类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。

public static void arraycopy(Object src, int srcPos, Object dest,  int destPos,
                 int length)
从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。从 src 引用的源数组到 dest 引用的目标数组,数组组件的一个子序列被复制下来。被复制的组件的编号等于 length 参数。源数组中位置在 srcPossrcPos+length-1 之间的组件被分别复制到目标数组中的 destPosdestPos+length-1 位置。

b.java.util中的Arrays类,此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。

toString

public static String toString(short[] a)
返回指定数组内容的字符串表示形式。字符串表示形式由数组的元素列表组成,括在方括号("[]")中。相邻元素用字符 ", "(逗号加空格)分隔。这些元素通过 String.valueOf(short) 转换为字符串。如果 anull,则返回 "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的更多相关文章

  1. Effective Java 第三版——62. 当有其他更合适的类型时就不用字符串

    Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...

  2. 20165304实验一java开发环境熟悉

    实验报告封面 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:李松杨 学号:20165304 指导教师:娄嘉鹏 实验日期:2018年4月2日 实验时间:13:45 - 15:25 实 ...

  3. 20165320 实验一 java环境的熟悉

    实验内容与步骤 一.java开发环境的熟悉 1.建立一个有关自己学号的目录 2.在当前文件下编译一个带包Hello.java文件 3.代码内容 package sq; import java.util ...

  4. java开始到熟悉100-102

    本次内容:arraylist() 1. package list; import java.util.ArrayList; import java.util.Date; import java.uti ...

  5. java基础:熟悉3种内部类的写法,重点匿名内部类的使用

    一.内部类定义 内部类(nested classes),面向对象程序设计中,可以在一个类的内部定义另一个类.嵌套类分为两种,即静态嵌套类和非静态嵌套类.静态嵌套类使用很少,最重要的是非静态嵌套类,也即 ...

  6. [原创]java WEB学习笔记62:Struts2学习之路--表单标签:form,表单标签的属性,textfield, password, hidden,submit ,textarea ,checkbox ,list, listKey 和 listValue 属性,select ,optiongroup ,checkboxlist

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  7. Android(java)学习笔记62:继承Thread类创建线程类

    package cn.itcast_02; /* * 该类要重写run()方法,为什么呢? * 不是类中的所有代码都需要被线程执行的. * 而这个时候,为了区分哪些代码能够被线程执行,java提供了T ...

  8. Java基础知识强化62:Arrays工具类之概述和使用

    1. Arrays工具类: Arrays这个类包含操作数组(比如排序和查找)的各种方法. 2. Arrays的方法: (1)toString方法:把数组转成字符串 public static Stri ...

  9. java代码示例(6-2)

    创建Customer.java /*** * 需求分析:创建客户类 * @author chenyanlong * 日期:2017/10/15 */ package com.hp.test06; pu ...

随机推荐

  1. Codeforces Round #439 (Div. 2) E. The Untended Antiquity

    E. The Untended Antiquity 题目链接http://codeforces.com/contest/869/problem/E 解题心得: 1.1,x1,y1,x2,y2 以(x1 ...

  2. PAT Basic 1070

    1070 结绳 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下图所示套接在一起.这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连.每次串连后,原 ...

  3. Mac下Python和Pycharm之virtualenv

    一.python如何配置virtualenv   1.安装virtualenv pip3 install virtualenvpip install -i https://pypi.tuna.tsin ...

  4. Knockout v3.4.0 中文版教程-16-控制流-foreach绑定

    2. 控制流 1. foreach绑定 目的 foreach绑定会遍历一个数组,为每个数组项生成重复的元素标记结构并做关联.这在渲染列表或表格的时候特别有用. 假设你的数组是一个监控数组,之后无论你进 ...

  5. C++类设计1(Class without pointer members)

    class complex{ public: complex (double r = 0, double i = 0):re(r), im(i){} //inline complex& ope ...

  6. 紫书第五章训练2 F - Compound Words

    F - Compound Words You are to find all the two-word compound words in a dictionary. A two-word compo ...

  7. Windows同步阿里云时间

    Ctrl+R打开cmd命令框 输入:gpedit.msc 计算机配置”—“管理模版”—“系统”—“Windows 时间服务”—“时间提供程序”—“配置 Windows NTP 客户端 双击打开配置 W ...

  8. 数据结构1 「在线段树中查询一个区间的复杂度为 $O(\log N)$」的证明

    线段树属于二叉树, 其核心特征就是支持区间加法,这样就可以把任意待查询的区间$[L, R]$分解到线段树的节点上去,再把这些节点的信息合并起来从而得到区间$[L,R]$的信息. 下面证明在线段树上查询 ...

  9. spring之注入类型

    spring有三种注入类型: set注入: 构造注入: 接口注入: 一.set注入(引用spring官方文档中的例子)(用的最多) 1.首先在代码中我们需要编写成员变量的set方法,如下所示,一般情况 ...

  10. Generation I

    Generation I Oak is given N empty and non-repeatable sets which are numbered from 1 to N. Now Oak is ...