zoukankan      html  css  js  c++  java
  • 2020软件工程作业04

    这个作业属于哪个课程 2018级软件工程 - 中南林业科技大学涉外学院
    这个作业要求在哪里 2020软件工程作业04
    这个作业的目标 测试编程能力
    其他参考文献

    题一:寻找数组中第K大是数 考察算法:排序算法 总分:50

    解题思路

    按指定要求拷贝数组,拷贝后进行排序,得到指定大小的数

    代码

    
    import java.util.Arrays;
    import java.util.Scanner;
    
    public class Demo1 {
    
    	public static void main(String[] args) {
    		int n = 0;		
    		int m = 0;
    		int l,r,k;
    		Scanner sc = new Scanner(System.in);
    		
    		n = sc.nextInt();
    		int[] arr = new int[n];
    		for(int i = 0;i<n;i++) {
    			arr[i] = sc.nextInt();
    		}
    		
    		m = sc.nextInt();
    		for(int i = 0;i < m;i++) {
    			l = sc.nextInt();
    			r = sc.nextInt();
    			k = sc.nextInt();
    			
    			int[] newarr = Arrays.copyOfRange(arr, l-1, r);
    			Arrays.sort(newarr);			
    			System.out.println(newarr[newarr.length-k]);
    		}
    	}
    
    }
    
    

    题二:二叉树的先、中、后 序遍历与层级遍历 考察算法: dfs + bfs搜索算法 总分:40

    解题思路

    前序遍历:根左右
    中序遍历:左根右
    后序遍历:左右根
    层次遍历:先将根节点入队,出队保存队头并访问,将出队结点的左右子树根入队

    代码

    
    import java.util.LinkedList;
    
    
    public class Main {
    	
    	public static void main(String[] args) {
    		/*
    			 作业要求:叉树的先、中、后 序遍历与层级遍历
    	                     自己实现四个方法,main方法中调用,将结果打印到控制台
    		 */
    		
    		/*
    		 * 二叉树的结构
                         A
                        / 
                       T   6
                      /
                     D
                   /   
                  N     5
                 /     /
                B   4  1
                     
                      9
    		 */
    		Node root = into();
    		// 先序遍历
    		System.out.print("先序遍历:");
    		A(root);
    		System.out.println();
    		// 中序遍历
    		System.out.print("中序遍历:");
    		B(root);
    		System.out.println();
    		// 后续遍历
    		System.out.print("后序遍历:");
    		C(root);
    		System.out.println();
    		// 层级遍历
    		System.out.print("层次遍历:");
    		D(root);
    	}
    
    	private static void A(Node tree) {
    		// TODO 先序遍历
    		if (tree != null) {
    			System.out.print(tree.data + " ");
    			A(tree.l);
    			A(tree.r);
    		} 
    		
    	}
    
    	private static void B(Node tree) {
    		// TODO 中序遍历
    		if (tree != null) {
    			B(tree.l);
    			System.out.print(tree.data + " ");
    			B(tree.r);
    		}
    		
    	}
    
    	private static void C(Node tree) {
    		// TODO 后续遍历
    		if (tree != null) {
    			C(tree.l);
    			C(tree.r);
    			System.out.print(tree.data + " ");
    		}
    		
    	}
    
    	private static void D(Node tree) {
    		if (tree != null) {
    			
    			LinkedList<Node> linkedList = new LinkedList<Node>();
    			 //先将根节点入队
    			linkedList.offer(tree);
    			Node node = null;
    			while (!linkedList.isEmpty()) {
    				node = (Node) linkedList.pop();
    				System.out.print(node.data + " ");
    				if (node.l != null) {
    					//将出队结点的左子树根入队
    					linkedList.offer(node.l);
    				}
    				if (node.r != null) {
    					 //将出队结点的右子树根入队
    					linkedList.offer(node.r);
    				}
    			}
    		}
    
    	}
    
    	// 构建一颗树,返回根节点
    	private static Node into() {
    		Node root = new Node("A");
    		Node node1 = new Node("T");
    		Node node2 = new Node("D");
    		Node node3 = new Node("N");
    		Node node4 = new Node("B");
    		Node node5 = new Node("6");
    		Node node6 = new Node("5");
    		Node node7 = new Node("4");
    		Node node8 = new Node("9");
    		Node node9 = new Node("1");
    		root.l = node1;
    		node1.l = node2;
    		node2.l = node3;
    		node2.r = node6;
    		node3.r = node7;
    		node7.r = node8;
    		node6.l = node9;
    		node3.l = node4;
    		root.r = node5;
    		return root;
    	}
    
    	// 节点
    	static class Node {
    		// 数据
    		Object data;
    		// 左孩子
    		Node l;
    		// 右孩子
    		Node r;
    
    		public Node() {
    		}
    
    		public Node(Object data) {
    			this.data = data;
    			this.l = null;
    			this.r = null;
    		}
    
    		public Node(Object data, Node l, Node r) {
    			this.data = data;
    			this.l = l;
    			this.r = r;
    		}
    	}
    }
    
    

    此次学习感悟:

    第一题我无法登陆蓝桥杯练习系统,所以也没有办法打开原题提交。
    对于二叉树个人并不熟练,不太会写

    时间 链接
    2020/7/28 2020软件工程作业01
    2020/8/1 2020软件工程作业02
  • 相关阅读:
    session机制、cookie机制
    TCP报头格式
    python中with语句的使用
    html一些东东
    jquery 几点注意事项
    C# 一些小东东
    Microsoft Jet 数据库引擎找不到对象'Sheet1$_'。请确定对象是否存在,并正确地写出它的名称和路径
    DataTable Select查询
    js求指定时间的周一和周日
    asp.net 页面执行过程
  • 原文地址:https://www.cnblogs.com/lmcmha/p/13548844.html
Copyright © 2011-2022 走看看