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
参数。源数组中位置在 srcPossrcPos+length-1
之间的组件被分别复制到目标数组中的 destPosdestPos+length-1
位置。

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

toString

public static String toString(short[] a)


返回指定数组内容的字符串表示形式。字符串表示形式由数组的元素列表组成,括在方括号("[]")中。相邻元素用字符 ",
"
(逗号加空格)分隔。这些元素通过 String.valueOf(short) 转换为字符串。如果 a
null,则返回 "null"

c.打印数组


 1 package array;
2
3 import java.util.Arrays;
4
5 public class array {
6 public static void main(String[] args)
7 {
8 int[] a={1,2,43,12,5,65,23};
9 System.out.println(a);
10 System.out.println(Arrays.toString(a));
11 Arrays.sort(a);
12 System.out.println(Arrays.toString(a));
13 }
14 }

运行结果:
[[email protected]
[1, 2, 43, 12, 5, 65, 23]
[1, 2, 5, 12, 23, 43,
65]

直接打印a结果可能是地址,[I代表是一个int数组,‘@’后面跟的是数组所在的地址。

d.对象也可以排序,不过要自己定义compareTo方法,这个放到后面容器的地方记录。

2,数组排序

冒泡排序


 1 package array;
2
3 import java.util.Arrays;
4
5 public class maopao {
6 public static void main(String[] args)
7 {
8 int[] a={1,13,4,2,5,23,6,9,3};
9 sort(a);
10 System.out.println(Arrays.toString(a));
11 }
12 public static void sort(int[] a)
13 {
14 int i,j;
15 int temp=0;
16 for(i=0;i<a.length;i++)
17 {
18 for(j=0;j<a.length-1-i;j++)
19 {
20 if(a[j]>a[j+1])
21 {
22 temp=a[j];
23 a[j]=a[j+1];
24 a[j+1]=temp;
25 }
26 }
27 }
28 }
29
30 }

运行结果: [1, 2, 3, 4, 5, 6, 9, 13, 23]

3、二分法查找

二分法查找前提必须是有序的(升序或降序)


 1 package array;
2
3 import java.util.Arrays;
4
5 /**
6 * 二分法查找
7 * @author acer
8 *
9 */
10 public class binarysearch {
11 public static void main(String[] args)
12 {
13 int searchmath=65;//查找的数
14 int[] a={56,100,23,42,37,120,12,80,94,65,76};
15 System.out.printf("普通查找%d的循环次数%d\n",searchmath,generalLoop(a,searchmath));
16 System.out.printf("二分查找%d的循环次数%d",searchmath,binarySearch(a,searchmath));
17 }
18 public static int generalLoop(int[] a,int searchmath)
19 {
20 int i;
21 int searchcount=0;
22 for(i=0;i<a.length;i++)
23 {
24 searchcount++;
25 if(a[i]==searchmath)
26 break;
27 }
28 return searchcount;
29 }
30 public static int binarySearch(int[] a,int searchmath)
31 {
32 Arrays.sort(a);//首先对数组进行排序
33 System.out.println("数组已排序");
34 int i=0;
35 int index=0;
36 int start=0;//开始位置
37 int end=a.length-1;//结束位置
38 int searchcount=0;
39 for(i=0;i<a.length;i++)
40 {
41 searchcount++;
42 index=(start+end)/2;
43 if(a[index]<searchmath)
44 {
45 start=index;
46 }
47 else if(a[index]>searchmath)
48 {
49 end=index;
50 }
51 else
52 {
53 break;
54 }
55 }
56 return searchcount;
57 }
58 }

运行结果:

普通查找65的循环次数10
数组已排序
二分查找65的循环次数1

java开始到熟悉62,码迷,mamicode.com

时间: 2024-10-15 12:01:10

java开始到熟悉62的相关文章

java开始到熟悉105-107

1,HashMap基本用法 1 package list; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 /** 7 * 测试map的基本用法 8 * @author acer 9 * 10 */ 11 public class Hashmap { 12 public static void main(String[] args) 13 { 14 Map map=new HashMap(); 15 System.out.pri

java开始到熟悉66-69

本次内容:DateFormat类 1.DateFormat类 1 package array; 2 /** 3 * 时间和字符串之间的转化 4 */ 5 import java.text.DateFormat; 6 import java.text.ParseException; 7 import java.text.SimpleDateFormat; 8 import java.util.Date; 9 10 public class dateformat { 11 public static

java开始到熟悉70-71

本次内容:file类 1 package array; 2 /** 3 * file类 4 */ 5 import java.io.File; 6 import java.io.IOException; 7 8 public class file { 9 public static void main(String[] args) 10 { 11 File f1=new File("d:/tu/11.png");//文件路径名 12 File f2=new File("d:/

java开始到熟悉60

本次主题:多维数组 1,多维数组的初始话有三种:默认初始化.静态初始化.动态初始化. 这里只讲解静态初始化: 这里以二位数组为例,实际应用中,一维用得最多,二维次之,三维以及三维以上几乎很少使用,而且也比较复杂. 1 package array; 2 3 public class multiarray { 4 public static void main(String[] args){ 5 int[][] a={ 6 {1,2}, 7 {3,4,0,9}, 8 {5,6,7} 9 }; 10

java开始到熟悉61

本此主题:多维数组----矩阵运算 矩阵的运算规则是将对应位置的值进行运算,如上图所示. 1 package array; 2 3 public class Matrix { 4 /** 5 * 打印矩阵 6 * @param c 7 */ 8 public static void print(int[][] c) 9 { 10 int i,j; 11 for(i=0;i<c.length;i++) 12 { 13 for(j=0;j<c.length;j++) 14 { 15 System.

java开始到熟悉72-76

本次内容:异常机制 1.为什么需要异常 2.异常 3.error类 4.exception类 5.exception类中的unchecked exception 举例: 6.常用异常处理方法 a.try 注意:一个try语句块至少得带一个finally语句块或catch语句块 1 package array; 2 /** 3 * exception 4 * @author acer 5 * 6 */ 7 public class exception { 8 public static void

java开始到熟悉63-65

本次内容:java常用类 1.包装类 1 package array; 2 3 public class wrapperclass { 4 public static void main(String[] args) 5 { 6 Integer i=new Integer(100); 7 System.out.println(i); 8 System.out.println(Integer.MAX_VALUE); 9 System.out.println(Integer.MIN_VALUE);

java开始到熟悉100-102

本次内容:arraylist() 1. 1 package list; 2 3 import java.util.ArrayList; 4 import java.util.Date; 5 import java.util.List; 6 7 /** 8 * 测试list的基本方法 9 * @author acer 10 * 11 */ 12 public class arraylist { 13 public static void main(String[] args) 14 { 15 Li

Android(java)学习笔记62:关于多线程的实现(代码体现)

1 package cn.itcast_02; 2 3 /* 4 * 该类要重写run()方法,为什么呢? 5 * 不是类中的所有代码都需要被线程执行的. 6 * 而这个时候,为了区分哪些代码能够被线程执行,java提供了Thread类中的run()用来包含那些被线程执行的代码. 7 */ 8 public class MyThread extends Thread { 9 10 @Override 11 public void run() { 12 // 自己写代码 13 // System.