Java程序设计第五章课后题

论坛 期权论坛     
选择匿名的用户   2021-5-30 01:11   41   0
<p> </p>
<p><img alt="" height="360" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-52093e8f21962dedf0213fa40a8e2a20.png" width="1200"></p>
<pre class="blockcode"><code class="language-java">import java.util.Scanner;
class Demo05_01_02{
    public static void main(String[] args){
        int[] arr&#61;new int[101];
        Scanner scanner&#61;new Scanner(System.in);
        System.out.print(&#34;Enter numbers:&#34;);
        while(true){
            int num&#61;scanner.nextInt();
            if(num&#61;&#61;0){
                break;
            }
            arr[num]&#43;&#43;;
        }
        for(int i&#61;0;i&lt;arr.length;i&#43;&#43;){
            if(arr[i]!&#61;0){
                System.out.println(i&#43;&#34; occurs &#34;&#43;arr[i]&#43;(arr[i]&gt;1?&#34; times&#34;:&#34; time&#34;));
            }
        }
    }
}</code></pre>
<p> </p>
<p><img alt="" height="270" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-0ab70c1918f5638dbd6627d3dfe539ec.png" width="862"></p>
<pre class="blockcode"><code class="language-java">import java.util.*;
class Demo05_02{
    public static void main(String[] args){
        /*
        思路1
            在全部输入之后去重复 func1
        思路2
            边输入边去重复 func2
        */
        // func1();
        func2();
    }
    public static void func2(){
        int[] arr&#61;new int[0];
        Scanner scanner &#61; new Scanner(System.in);
        System.out.print(&#34;Enter numbers:&#34;);
        for(int i&#61;0;i&lt;10;i&#43;&#43;){
            int num&#61;scanner.nextInt();
            if(!contains(arr,num)){
                arr&#61;copyOf(arr,arr.length&#43;1);
                arr[arr.length-1]&#61;num;
            }
        }
        System.out.println(Arrays.toString(arr));
    }
    public static void func1(){
        //1.循环遍历数组进行赋值
        Scanner scanner &#61; new Scanner(System.in);
        System.out.print(&#34;Enter numbers:&#34;);
        int[] arr &#61; new int[10];
        for(int i &#61; 0;i &lt; arr.length;i&#43;&#43;){
            arr[i] &#61; scanner.nextInt();
        }
        //2.开始对已有的数据进行去重复操作
        // 1 2 3 3 2 4 3 2 4 1
        // 1 2 3 4
        // method1(arr);        //空间S(n) 时间O(nm)
        // method2(arr);        //空间S(1) 时间O(n^2)
        // method3(arr);
    }
    public static void method3(int[] arr){
        //不创建额外空间 不许改变原先的顺序
        int i&#61;0;
        int size&#61;arr.length;
        while(i&lt;size){
            for(int j&#61;i&#43;1;j&lt;size;){
                if(arr[j]&#61;&#61;arr[i]){
                    for(int k&#61;j&#43;1;k&lt;size;k&#43;&#43;){
                        arr[k-1]&#61;arr[k];
                    }
                    size--;
                }else{
                    j&#43;&#43;;
                }
            }
            i&#43;&#43;;
        }
        for(i&#61;0;i&lt;size;i&#43;&#43;){
            System.out.print(arr[i]&#43;&#34; &#34;);
        }
    }
    public static void method2(int[] arr){
        //插入排序
        for(int i&#61;1;i&lt;arr.length;i&#43;&#43;){
            int e&#61;arr[i];
            int j;
            for(j&#61;i;j&gt;0&amp;&amp;arr[j-1]&gt;e;j--){
                arr[j]&#61;arr[j-1];
            }
            arr[j]&#61;e;
        }
        //连续相等
        for(int i&#61;0;i&lt;arr.length;){ //O(n)
            System.out.print(arr[i]&#43;&#34; &#34;);
            int count&#61;1;
            for(int j&#61;i&#43;1;j&lt;arr.length;j&#43;&#43;){
                if(arr[j]&#61;&#61;arr[i]){
                    count&#43;&#43;;
                }else{
                    break;
                }
            }
            i&#43;&#61;count;
        }
    }
    public static void method1(int[] arr){
        int[] newArr&#61;new int[0];
        for(int i&#61;0;i&lt;arr.length;i&#43;&#43;){ //O(n)
            if(!contains(newArr,arr[i])){ //O(m)
                newArr&#61;copyOf(newArr,newArr.length&#43;1);
                newArr[newArr.length-1]&#61;arr[i];
            }
        }
        System.out.println(Arrays.toString(newArr));
    }
    public static boolean contains(int[] arr,int key){
        for(int i&#61;0;i&lt;arr.length;i&#43;&#43;){
            if(arr[i]&#61;&#61;key){
                return true;
            }
        }
        return false;
    }
    public static int[] copyOf(int[] arr,int newLen){
        int[] newArr&#61;new int[newLen];
        for(int i&#61;0;i&lt;arr.length;i&#43;&#43;){
            newArr[i]&#61;arr[i];
        }
        return newArr;
    }

}</code></pre>
<p>5.3 </p>
<p> </p>
<p><img alt="" height="350" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-99f61fd8b9c5c00276174396caf9fa7d.png" width="1200"></p>
<pre class="blockcode"><code class="language-java">import java.util.*;
class Demo05_03{
    public static void main(String[] args){
        //1.获取用户的输入 只不过第一个输入的数据时数据的个数(数组的长度)
        Scanner scanner&#61;new Scanner(System.in);
        System.out.print(&#34;Enter a list:&#34;);
        int len&#61;scanner.nextInt();//获取的第一个数值就是数组的长度
        int[] arr&#61;new int[len];
        for(int i&#61;0;i&lt;arr.length;i&#43;&#43;){
            arr[i]&#61;scanner.nextInt();
        }
        //2.对数组进行有序的判断
        if(isSorted(arr)){
            System.out.println(&#34;The list is already sorted.&#34;);
        }else{
   
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP