zoukankan      html  css  js  c++  java
  • 数组作业

    1.定义一个长度为10的int数组,统计数组中的最大值、最小值、以及奇数和偶数的个数

    /*
    定义一个长度为10的int数组,统计数组中的最大值、最小值、以及奇数和偶数的个数
     */
    public class Test01 {
        public static void main(String[] args) {
    
            int[] arr = {54,14321,54,35,32,6,32,0,432,4321};
    
            // 找最大值
            int max = findMax(arr);
            System.out.println("最大值:" + max);
    
            // 找最小值
            int min = findMin(arr);
            System.out.println("最小值:" + min);
    
            //找奇数和偶数的个数
            int count1 = 0;
            int count2 = 0;
            for(int i = 0; i < arr.length; i++){
                if(arr[i] % 2 == 0){
                    count1++;
                }else{
                    count2++;
                }
            }
            System.out.println("偶数个数:" + count1);
            System.out.println("奇数个数:" + count2);
        }
    
        private static int findMin(int[] arr) {
            // 认为第一个元素是最小的
            int min = 0;
            // 遍历数组
            for(int i = 1; i < arr.length; i++){
                if(arr[i] < arr[min]){
                    min = i;
                }
            }
            return arr[min];
        }
    
        private static int findMax(int[] arr) {
            // 认为第一个元素是最大的。
            int max = 0;
            // 遍历数组
            for(int i = 1; i < arr.length; i++){
                if(arr[i] > arr[max]){
                    max = i;
                }
            }
            return arr[max];
        }
    }

    2.定义一个Student类型的数组,每一个Student对象都有姓名和考试成绩的属性。
    请编写程序对Student数组中的学生按照成绩进行排序。
    例如:
    Student s1 = new Student("zhangsan", 90);
    Student s2 = new Student("lisi", 80);
    Student s3 = new Student("wangwu", 99);
    Student s4 = new Student("zhaoliu", 75);
    Student s5 = new Student("lucy", 60);
    Student[] stus = {s1, s2, s3, s4, s5};
    编写程序按照学生的成绩进行排序。
    排序之后对数组进行遍历输出。

    /*
    定义一个Student类型的数组,每一个Student对象都有姓名和考试成绩的属性。
    请编写程序对Student数组中的学生按照成绩进行排序。
        例如:
            Student s1 = new Student("zhangsan", 90);
            Student s2 = new Student("lisi", 80);
            Student s3 = new Student("wangwu", 99);
            Student s4 = new Student("zhaoliu", 75);
            Student s5 = new Student("lucy", 60);
            Student[] stus = {s1, s2, s3, s4, s5};
            编写程序按照学生的成绩进行排序。
            排序之后对数组进行遍历输出。
     */
    public class Test02 {
        public static void main(String[] args) {
    
            Student s1 = new Student("zhangsan", 90);
            Student s2 = new Student("lisi", 80);
            Student s3 = new Student("wangwu", 99);
            Student s4 = new Student("zhaoliu", 75);
            Student s5 = new Student("lucy", 60);
    
            Student[] arr = {s1, s2, s3, s4, s5};
    
            // 使用选择排序
            for(int i = 0; i < arr.length - 1; i++){
                int min = i;
                for(int j = i + 1; j < arr.length; j++){
                    if(arr[j].compareTo(arr[min]) < 0){
                        min = j;
                    }
                }
                if(i != min){
                    Student temp;
                    temp = arr[i];
                    arr[i] = arr[min];
                    arr[min] = temp;
                }
            }
    
            for(Student s : arr){
                System.out.println(s);
            }
    
        }
    }

    3. 提取一个方法,将指定数组中的数组元素进行反转
    例如:{10,23,2,45,6}—>{6,45,2,23,10}

    public class Test03 {
        public static void main(String[] args) {
            // 原始数组
            int[] arr = {10,23,2,45,6};
    
            // 翻转
            reverse(arr);
    
            System.out.println("=================================");
    
            // 遍历输出
            for(int a : arr){
                System.out.println(a);
            }
    
        }
    
        /**
         * 翻转数组中的每个元素
         * @param arr
         */
        private static void reverse(int[] arr) {
            //{10,23,2,45,6}
            //{6,45,2,23,10}
            // 不允许新建一个新的数组,用交换位置来完成翻转!
            // 交换位置的次数是:arr.length / 2
            for(int i = 0; i < arr.length / 2; i++){
                // 位置的交换
                // 谁和谁交换?
                // arr[0] - arr[4]
                // arr[1] - arr[3]
    
                // arr[i] - arr[arr.length-1-i] 小算法!
                int temp;
                temp = arr[i];
                arr[i] = arr[arr.length-1-i];
                arr[arr.length-1-i] = temp;
            }
        }
    }

    4. 利用选择排序对数据进行降序排序

    /**
     * 利用选择排序对数据进行降序排序
     *
     * 每次找出最大的和最左侧元素交换位置。
     */
    public class Test04 {
        public static void main(String[] args) {
            int[] arr = {10,8,6,4,3};
            for(int i = 0; i < arr.length - 1; i++){
                int max = i;
                for(int j = i + 1; j < arr.length; j++){
                    if(arr[j] > arr[max]){
                        max = j;
                    }
                }
                if(i != max){
                    int temp;
                    temp = arr[i];
                    arr[i] = arr[max];
                    arr[max] = temp;
                }
            }
    
            for(int num : arr){
                System.out.println(num);
            }
        }
    }

    5.找出一个数组中有哪些重复元素, 并且这些元素各重复了几次

    import java.util.Arrays;
    
    /**
     * 找出一个数组中有哪些重复元素, 并且这些元素各重复了几次
     */
    public class Test05 {
        public static void main(String[] args) {
    
            int[] arr = {543,543,4,265,4,325,432,5,432,5,432,265};
    
            // 对以上数组排序
            Arrays.sort(arr);
    
            //遍历
            /*for(int a : arr) {
                System.out.println(a);
            }*/
    
            /*
            4
            4
            5
            5
            265
            265
            325
            432
            432
            432
            543
            543
             */
    
            // 将第1个元素记住
            int index = 0;
            while(index < arr.length){
    
                // 参与比较的第一个元素
                int firstElement = arr[index];
    
                // 这个元素至少有1个。
                int count = 1;
    
                for(int i = index + 1; i < arr.length; i++){
                    if(arr[i] == firstElement){
                        count++;
                    }else{
                        break;
                    }
                }
                if(count != 1){
                    System.out.println(firstElement + "重复了:" + count + "次");
                }
                index += count;
            }
    
    
        }
    
    }
  • 相关阅读:
    剪绳子
    一步一步创建聊天程序2-利用epoll来创建简单的聊天室
    一步一步创建聊天程序1-利用进程和共享内存来创建简易聊天程序
    重写二路归并排序
    数据结构中的参见排序算法的实现,以及时间复杂度和稳定性的分析(2)
    数据结构中的参见排序算法的实现,以及时间复杂度和稳定性的分析(1)
    fork函数的一些小结
    LRU的实现(使用list)
    关于一道fork生成子进程的题目
    【转载】C++编译过程
  • 原文地址:https://www.cnblogs.com/dupeilin/p/12984678.html
Copyright © 2011-2022 走看看