【Java】实验四

1、在main方法中创建一个含有10个元素的int型数组,进行以下操作:(1)将数组元素按照从小到大的顺序排列;(2)对排好序的数组使用折半查找(使用递归和非递归两种形式分别实现)查找某一个int元素。

 

myArray.java
 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类实现以下功能:输入一个正整数,输出该整数所对应的二进制数。

Stack.java
 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 }
main.java
 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>

Matrix.java
 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 }
main.java
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():打印出当前矩阵的值。

Matrix.java
 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 }
main.java
 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 }

 

 

转载于:https://www.cnblogs.com/lyblanche/archive/2013/01/21/2870600.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值