1、在main方法中创建一个含有10个元素的int型数组,进行以下操作:(1)将数组元素按照从小到大的顺序排列;(2)对排好序的数组使用折半查找(使用递归和非递归两种形式分别实现)查找某一个int元素。
1 package com.ly.myarray; 2 3 import java.util.Scanner; 4 5 public class myArray { 6 public static void sort(int[] a,int n){ 7 int temp; 8 for(int i=0;i<n;i++){ 9 for(int j=0;j<i;j++){ 10 if(a[j]>a[i]){ 11 temp = a[j]; 12 a[j] = a[i]; 13 a[i] = temp; 14 } 15 } 16 } 17 } 18 19 public static int BinarySearch(int[] array,int x,int n){ 20 int left = 0; 21 int right = n-1; 22 while(left<=right){ 23 int middle = (left+right)/2; 24 if(x==array[middle]){ 25 System.out.println(x + "位于数组中第" + middle + "个位置。"); 26 return middle; 27 } 28 if(x>array[middle]){ 29 left = middle+1; 30 }else{ 31 right = middle-1; 32 } 33 } 34 System.out.println("未找到!"); 35 return -1; 36 } 37 38 public static void main(String[] args) { 39 int[] s = new int[]{6,8,2,9,4,11,1,7,12,10}; 40 int n; 41 Scanner scan = new Scanner(System.in); 42 for(int i=0;i<10;i++){ 43 System.out.print(s[i]+" "); 44 } 45 //排序 46 sort(s,10); 47 48 System.out.println(); 49 System.out.println("----------------------"); 50 51 for(int i=0;i<10;i++){ 52 System.out.print(s[i]+" "); 53 } 54 55 System.out.println(); 56 System.out.println("----------------------"); 57 58 //查找 59 System.out.print("请输入要查找的正整数:"); 60 n = scan.nextInt(); 61 BinarySearch(s,n,10); 62 } 63 }
2、使用一维数组编码实现一个栈(Stack)类,要求提供以下操作:(1)boolean isEmpty():判断栈当前是否为空;(2)入栈操作void push(obj):把数据元素obj插入堆栈;(3)出栈操作Object pop():出栈,并返回删除的数据元素;(4)Object getTop():取堆栈当前栈顶的数据元素并返回。编写代码测试所形成的Stack类,然后利用Stack类实现以下功能:输入一个正整数,输出该整数所对应的二进制数。
1 package com.ly.stack; 2 3 public class Stack { 4 public Object[] array; 5 public int maxLength; 6 public int top; 7 8 Stack(int maxLength){ 9 this.maxLength = maxLength; 10 array = new Object[maxLength]; 11 top = -1; 12 } 13 14 public boolean isEmpty(){ 15 if(top==-1) 16 return true; 17 else 18 return false; 19 } 20 21 public void push(Object obj){ 22 if(top != maxLength){ 23 array[top+1] = obj; 24 top++; 25 } 26 else 27 return; 28 } 29 30 public Object pop(){ 31 Object e = null; 32 if(top>-1){ 33 e = array[top]; 34 array[top] = null; 35 top--; 36 } 37 return e; 38 } 39 40 public Object getTop(){ 41 Object e = null; 42 if(top>-1){ 43 e = array[top]; 44 } 45 return e; 46 } 47 }
1 package com.ly.stack; 2 3 import java.util.Scanner; 4 5 public class main { 6 public static void main(String[] args){ 7 Stack stack = new Stack(32); 8 Scanner scan = new Scanner(System.in); 9 10 System.out.print("请输入一个正整数:"); 11 int n = scan.nextInt(); 12 13 //测试Stack类 14 /* 15 stack.push(n); 16 System.out.println("输出:" + stack.getTop()); 17 System.out.println(stack.isEmpty()); 18 stack.pop(); 19 System.out.println(stack.isEmpty()); 20 */ 21 22 //求一个正整数对应的二进制数 23 while(n>0){ 24 stack.push(n%2); 25 n=n/2; 26 } 27 System.out.println("-----------------"); 28 while(!stack.isEmpty()){ 29 System.out.print(stack.pop()); 30 } 31 scan.close(); 32 } 33 }
3、按照要求使用Java编码。
1) 以类型int[][]声明一个叫matrix的二维数组变量,将矩阵初始化为一个5个元素的数组。
2) 以下列方式为matrix的内部元素赋值:matrix从零开始循环到其长度值;例如索引为i,在每次迭代中,将matrix[i]指向一个新的整数数组,其长度为i。然后用索引变量j,对数组中的每一个元素进行循环。在每次内部循环中,将matrix[i][j]赋值为(i*j)。
3) 通过循环打印matrix中的所有元素,结果为:
<>
<0>
<0 2>
<0 3 6>
<0 4 8 12>
1 package com.ly.matrix; 2 3 public class Matrix { 4 private int[][] matrix; 5 6 Matrix(){ 7 matrix = new int[5][]; 8 matrix[0] = new int[0]; 9 matrix[1] = new int[1]; 10 matrix[2] = new int[2]; 11 matrix[3] = new int[3]; 12 matrix[4] = new int[4]; 13 14 for(int i=0;i<5;i++){ 15 for(int j=0;j<i;j++){ 16 matrix[i][j] = i*j; 17 } 18 } 19 } 20 21 public void print(){ 22 for(int i=0;i<5;i++){ 23 System.out.print("<"); 24 for(int j=0;j<i;j++){ 25 System.out.print(matrix[i][j] + " "); 26 } 27 System.out.println(">"); 28 } 29 } 30 }
1 package com.ly.matrix; 2 3 public class Main { 4 public static void main(String[] args) { 5 Matrix matrix = new Matrix(); 6 matrix.print(); 7 } 8 }
4、利用二维数组实现一个矩阵类:Matrix。要求提供以下操作:(1)set(int row, int col, double value):将第row行第col列的元素赋值为value;(2)get(int row,int col):取第row行第col列的元素;(3)width():返回矩阵的列数;(4)height():返回矩阵的行数;(5)Matrix add(Matrix b):返回当前矩阵与矩阵b相加后的结果矩阵;(6)Matrix multiply(Matrix b):返回当前矩阵与矩阵b相乘后的结果矩阵。(7)print():打印出当前矩阵的值。
1 package com.ly.matrix; 2 3 public class Matrix { 4 double array[][]; 5 private int height;//行数 6 private int width;//列数 7 8 Matrix(int height,int width){ 9 this.height = height; 10 this.width = width; 11 array = new double[height][width]; 12 } 13 14 public void set(int row,int vol,double value){ 15 array[row][vol] = value; 16 } 17 18 public double get(int row,int vol){ 19 return array[row][vol]; 20 } 21 22 public int height(){ 23 return height; 24 } 25 26 public int width(){ 27 return width; 28 } 29 30 public Matrix add(Matrix b){ 31 if(b.height()==height && b.width()==width){ 32 for(int i=0;i<height;i++){ 33 for(int j=0;j<width;j++){ 34 array[i][j] = array[i][j] + b.get(i, j); 35 } 36 } 37 } 38 return this; 39 } 40 41 public Matrix multiply(Matrix b){ 42 Matrix c = new Matrix(b.width,this.height); 43 if(this.height == b.width){ 44 int temp = 0; 45 for(int i=0;i<this.height;i++){ 46 for(int j=0;j<b.width;j++){ 47 for(int k=0;k<this.width;k++){ 48 temp += this.get(i, k)*b.get(k, j); 49 c.set(i, j, temp); 50 } 51 temp = 0; 52 } 53 } 54 } 55 return c; 56 } 57 58 public void print(){ 59 for(int i=0;i<this.height;i++){ 60 for(int j=0;j<this.width;j++){ 61 System.out.print(this.get(i, j) + "\t"); 62 } 63 System.out.println(); 64 } 65 } 66 }
1 package com.ly.matrix; 2 3 public class main { 4 public static void main(String[] args) { 5 Matrix ma = new Matrix(3,3); 6 Matrix mb = new Matrix(3,3); 7 Matrix mc = new Matrix(2,4); 8 Matrix md = new Matrix(4,2); 9 10 for(int i=0;i<3;i++){ 11 for(int j=0;j<3;j++){ 12 ma.set(i,j,1.0); 13 } 14 } 15 16 for(int i=0;i<3;i++){ 17 for(int j=0;j<3;j++){ 18 mb.set(i,j,2.0); 19 } 20 } 21 22 for(int i=0;i<2;i++){ 23 for(int j=0;j<4;j++){ 24 mc.set(i, j,(i+1)*(j+1)); 25 } 26 } 27 28 for(int i=0;i<4;i++){ 29 for(int j=0;j<2;j++){ 30 md.set(i, j, i+j+1); 31 } 32 } 33 34 System.out.println("矩阵A:"); 35 ma.print(); 36 37 System.out.println("---------------"); 38 System.out.println("矩阵B:"); 39 mb.print(); 40 41 //测试矩阵的加法函数 42 System.out.println("---------------"); 43 System.out.println("矩阵A、B相加:"); 44 ma.add(mb); 45 ma.print(); 46 47 System.out.println("---------------"); 48 System.out.println("矩阵C:"); 49 mc.print(); 50 51 System.out.println("---------------"); 52 System.out.println("矩阵D:"); 53 md.print(); 54 55 //矩阵乘法 56 System.out.println("---------------"); 57 System.out.println("矩阵C、D相乘:"); 58 mc.multiply(md).print(); 59 } 60 61 }