int[][] arr1=new int[][]{{1,2,3},{4,5},{6,7,8}};//静态初始化
int arr1[][]=new int[][]{{1,2,3},{4,5},{6,7,8}};//静态初始化
int[] arr1[]=new int[][]{{1,2,3},{4,5},{6,7,8}};//静态初始化
String[][] arr2=new String[3][2];//动态初始化
String[][] arr2=new String[3][];//动态初始化
String[][] test= {{"1","2"},{"3","4"}};
有的
public static void main(String[] args) {
int[][] arr=new int[4][3];
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[0][0]);
}
答案:
[[I@2f92e0f4
[I@28a418fc
0
1.数据与数据之间的逻辑关系:集合、一对一、一对多、多对多
2.数据的存贮结构:
线性表:顺序表、链表、栈、队列
树形结构:二叉树
图形结构:
a ) x[0] = y;
b) y[0] = x;
c) y[0][0] = x;
d) x[0][0] = y;
e) y[0][0] = x[0];
f) x = y;
答案:
可以编译成功的是:
b,e
public static void main(String[] args) {
int[][] test=new int[10][];
for(int i=0;i<test.length;i++) {
test[i]=new int[i+1];
test[i][0]=test[i][i]=1;
if(i>1) {
for(int j=1;j<i;j++) {
test[i][j]=test[i-1][j-1]+test[i-1][j];
}
}
}
for(int i=0;i<test.length;i++) {
for(int j=0;j<test[i].length;j++) {
System.out.print(test[i][j]+" ");
}
System.out.println();
}
}
1.数组元素的赋值(杨辉三角、回形数等)
2.求数值型数组中元素的最大值、最小值、平均数、总和等
3.数组的复制、反转、查找(线性查找、二分法查找)
4.数组元素的排序算法
public static void main(String[] args) {
int test[]=new int[6];
int temp=0;
boolean flag=true;
for(int i=0;i<test.length;i++) {
do {
temp=(int)(Math.random()*30+1);
for(int j=0;j<i;j++)
{
if(temp==test[j]) {
flag=false;
}
}
}while(!flag);
test[i]=temp;
System.out.println("["+i+"]="+test[i]);
}
}
public static void main(String[] args) {
String[] arr=new String[] {"1","2","3","4","5"};
String temp="";
int length=arr.length;
for(int i=0;i<length/2;i++) {
temp=arr[length-i-1];
arr[length-i-1]=arr[i];
arr[i]=temp;
}
for(int i=0;i<length;i++) {
System.out.print(arr[i]+" ");
}
}
public static void main(String[] args) {
int[] arr2=new int[] {-1,1,3,4,5,6};
int dest1=-1;
int head=0;
int end=arr2.length-1;
boolean isFlag1=true;
while(head<=end) {
int middle=(head+end)/2;
if(dest1==arr2[middle]) {
System.out.println("找到了"+middle);
isFlag1=false;
break;
}
else if(arr2[middle]>dest1) {
end=middle-1;
}
else {
head=middle+1;
}
}
if(isFlag1) System.out.println("没有找到");
}
1.时间复杂度
2.空间复杂度
3.稳定性
1.内部排序:整个排序过程不需要借助于外部存储器(如磁盘等),所有排
序操作都在内存中完成。
2.外部排序:参与排序的数据非常多,数据量非常大,计算机无法把整个排
序过程放在内存中完成,必须借助于外部存储器(如磁盘)。外部排序最
常见的是多路归并排序。可以认为外部排序是由多次内部排序组成。
1.选择排序:直接选择排序、堆排序
直接选择排序:第一次从R[0]R[n-1]中选取最小值,与R[0]交换,第二次从R[1]R[n-1]中选取最小值,与R[1]交换,…,第i次从R[i-1]R[n-1]中选取最小值,与R[i-1]交换,…,第n-1次从R[n-2]R[n-1]中选取最小值,与R[n-2]交换,总共通过n-1次,得到一个按排序码从小到大排列的有序序列。
2.交换排序:冒泡排序、快速排序
3.插入排序:直接插入排序、折半插入排序、Shell排序
插入排序(Insertion-Sort)的基本思想:每次将一个待排序的数据按照大小插入到前面已经排好序的适当位置,直到全部数据插入完成为止。
4.归并排序
5.桶式排序
6.基数排序
1.输入
2.输出
3.有穷性
4.确定性
5.可行性
1.相邻两个数据进行比较,比较数字偏大(偏小)就互换,第一轮获得最小(最大)的数。
2.
public static void main(String[] args) {
int[] test=new int[] {5,2,7,10,1,-1,-3};
for(int i=test.length-1;i>0;i--) {
for(int j=1;j<=i;j++) {
if(test[j-1]>test[j]) {
int temp=test[j-1];
test[j-1]=test[j];
test[j]=temp;
}
}
}
for(int i=0;i<test.length;i++) {
System.out.print(test[i]+" ");
}
}
public class JavaDocTest {
private static void swap(int[] data, int i, int j) {
int temp = data[i];
data[i] = data[j];
data[j] = temp;
}
public static void quickSort(int[] data){
subSort(data,0,data.length-1);
}
private static void subSort(int[] data,int start,int end) {
if(start<end) {
int base=data[start];
int low=start;
int high=end+1;
while(true) {
while (low < end && data[++low] - base <= 0)
;
while (high > start && data[--high] - base >= 0)
;
if (low < high) {
swap(data, low, high);
} else {
break;
}
}
swap(data, start, high);
subSort(data, start, high - 1);//递归调用
subSort(data, high + 1, end);
}
}
public static void main(String[] args) {
int[] data = { 9, -16, 30, 23, -30, -49, 25, 21, 30 };
System.out.println("排序之前:\n" + java.util.Arrays.toString(data));
quickSort(data);
System.out.println("排序之后:\n" + java.util.Arrays.toString(data));
}
}
1.判断两个数组是否相等
int[] arr1=new int[] {1,2,3,4};
int[] arr2=new int[] {1,2,3,4};
boolean isEquals=Arrays.equals(arr1, arr2);
System.out.println(isEquals);
2.输出数组信息
System.out.println(Arrays.toString(arr1));
3.将指定值填充到数组之中
Arrays.fill(arr1, 10);
System.out.println(Arrays.toString(arr1));
4.对数组进行排序
Arrays.sort(arr2);
System.out.println(Arrays.toString(arr2));
5.对排序后的数组进行二分法检索指定的值
int index=Arrays.binarySearch(arr2, 2);
if(index>=0) {
System.out.println(index);
}else {
System.out.println("未找到");
}
1.java.lang.ArrayIndexOutOfBoundsException
2.java.lang.NullPointerException