手记

数组中元素移动、打印数组中元素出现的次数

  在幕课上学习好久了,虽然由于种种原因,最近一段时间没怎么来学习,但闲下来依旧会逛逛幕课,如同来看望很久之前的老朋友。
国庆没有回家,于是便产生了整理之前笔记发手记的冲动,可是打开那满满的笔记,却又胆怯了,想了想,就又看了看之前老错的作业题。呵呵,不出所料,又错了、、、、、
看过一些手记,感觉真的挺不错,这次发表的手记仅仅是想和大家分享讨论,不足之处,望指出。

1、用户从键盘输入若干个数存入数组中,用冒泡排序法对数组排序,比如:1 2 3 5 6 然后用户从键盘输入一个数,把该数插入数组中,保证插入该数后,数组还是有序的
思路分析:
插入数据后要求数据有序,所以,有两种思路:
一、先插入,后排序;
二、先对原先的数据进行排序,再插入;
准备代码:
---输出:

public class NewArray {

    /**
     *用户从键盘输入若干个数存入数组中,用冒泡排序法对数组排序, 比如:1 2 3 5 6 然后用户从键盘输入一个数,把该数插入数组中,
     * 保证插入该数后,数组还是有序的 1 2 3 4 5 6 
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] old = { 14, 56, 12, 98, 23, 27 };
        System.out.print("请输入待插入的数:");
        int num = sc.nextInt();
        System.out.println("插入一个数之后的顺序为:");
        printArray(insertByorder(old, num));
        System.out.println();
        System.out.println("先插入后排序-----------------");
        printArray(insertbeforeSort(old, num));
    }

    // 方法一:先排序,再插入
    public static int[] insertByorder(int[] arr, int elem) {
        //排序
        bubbleSort(arr);
        int[] newArray = new int[arr.length + 1];
        //给新数组赋值
        for (int i = 0; i < arr.length; i++) {
            newArray[i] = arr[i];
        }
        //查找插入的位置
        int index = -1;
        for (int i = 0; i < newArray.length; i++) {
            if (arr[i] > elem) {
                index = i;
                break;
            }
        }
        //元素后移
        for (int j = newArray.length - 1; j > index; j--) {
            newArray[j] = newArray[j - 1];
        }
        newArray[index] = elem;
        return newArray;

    }

    // 方法二:先插入,再排序
    public static int[] insertbeforeSort(int[] arr, int elem) {
        int[] newArray = new int[arr.length + 1];
        int i = 0;
        //新数组赋值
        for (i = 0; i < arr.length; i++) {
            newArray[i] = arr[i];
        }
        //直接将要插入的数据放在新数组的最后位置
        newArray[i] = elem;
        //排序
        bubbleSort(newArray);
        return newArray;

    }
//排序:
    public static void bubbleSort(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    exchange(arr, j, j + 1);
                }
            }
        }
    }
//实现数据交换
    public static void exchange(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;

    }
//输出数组元素
    public static void printArray(int[] arr) {
        for (int num : arr) {
            System.out.print(num + " ");
        }
    }
}

2、打印数组a(以int型为例)中每个数字出现的次数
思路分析:
打印数组中每个元素出现的次数===》遍历元素===》for循环;
第一次出现的元素依次与后面的元素比较===》会重复比较==》比较过的数字做特殊标记
代码:

public class PrintCount {

    /**
     * 统计数组(int[])中每个数字出现的次数
     */
    public static void main(String[] args) {
        int[] arr={ 1, 3, 3,8,9};
        for(int i=0;i<arr.length;i++){
            int count=1;
            for(int j=i+1;j<arr.length;j++){
                if(arr[i]==arr[j]){
                    count++;
                    //将比较过的数字做特殊标记
                    arr[j]=999;
                }
            }
            if(arr[i]!=999){
                System.out.println(arr[i]+"出现了"+count);
            }
        }
    }
}
0人推荐
随时随地看视频
慕课网APP