数组简单习题(冒泡、杨辉三角、平均数(大于或小于平均数的个数)、 二分法查找(折半查找)、)

数组简单习题:

# 冒泡排序

```Java
public class MaoPao {
    public static void main(String[] args) {
        int[] arr = new int[]{3, 4, 1, 7, -1, -2};
        int temp;//临时变量,用于我们调换数组中俩个元素
        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]) {
                    //如果前一个的值大于后一个的值,就让他们调还位置;
                    temp = arr[j + 1];
                    arr[j + 1] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        for (int i = 0; i < arr.length; i++) {//遍历数组
            System.out.print(arr[i] + " ");
        }
    }
}

**
杨辉三角
**

public class YangHui {
    public static void main(String[] args) {
        System.out.println("请输入一个整数:");
        Scanner input = new Scanner(System.in);
        int num =input.nextInt();//接受用户输入的数为int类型
        int[][] arr = new int[num][num];//接收到用户输入的值,赋给数组中
        for (int i = 0; i 

**

平均数/大于或小于平均数的个数

**

public class PracticeAvg {
    public static void main(String[] args) {
        System.out.println("请输入数组的大小:");
        Scanner input = new Scanner(System.in);
        int num = input.nextInt();//接受用户输入的数组长度
        int[] arr = new int[num];//创建一个数组,数组的长度为用户输入的数组长度
        for (int i = 0; i < arr.length; i++) {//遍历数组,让用户输入数组中的每个元素的值
            System.out.println("请输入第" + (i + 1) + "个数:");
            arr[i] = input.nextInt();
        }
        int sum = 0;//初始化,用于后面计算数组元素的总和
        double avg = 0.0;//初始化;用于计算平均值
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];//求最大值
            avg = sum / num;//求平均值
            System.out.println("数组的平均值为:" + avg);
        }
        //  扩展,顺便我们求出大于平均数的数和小于平均数的数
            int count1 = 0;//记录大于平均值的数
            int count2 = 0;//记录小于平均值的数

            for (int j = 0; j < arr.length; j++) {//遍历数组
                if (avg < arr[j]) {
                    count1++;//如果平均数小于当前数组中的数count1加1
                }
            }
            System.out.println("大于平均数的元素的个数为:" + count1);
            for (int k = 0; k < arr.length; k++) {//遍历数组
                if (avg > arr[k]) {
                    count2++;//如果平均数大于当前数组中的数count2加1
                }
            }
            System.out.println("小于平均数的元素的个数为:" + count2);
    }
}

二分法查找(折半查找)

就是先定义头索引和末索引;然后找出中间位置的值;

用中间位置的值,在次和它的头索和末索引的进行比较;

自己觉得这也可以认为一个递归问题吧!


package com.atwendu;

import java.util.Scanner;

/**
 * @ author sxp
 * @ create 2022-09-23 15:54
 */
/*
二分法查找(必须是有序)
 */
public class Find {
    public static void main(String[] args) {
        int[] arr = new int[]{1, 3, 4, 6, 7, 47, 89};//创建静态数组
        Scanner input = new Scanner(System.in);//获取用户输入的查找数
        System.out.println("请输入你要查找的数:");

        int dest = input.nextInt();
        int heed = 0;//首索引
        int end = arr.length - 1;//末索引
        boolean isFalg = true;
        while (heed <= end) {
            int middle = (heed + end) / 2;//middle当作中间索引
            if (arr[middle] == dest) {
                System.out.println("找到了,索引为:" + middle);
                isFalg = false;
                break;//跳出循环
            } else if (arr[middle] > dest) {
                end = arr[middle] - 1;//中间数大于你要找的数,那么就把中间数当作你下一次要找的末元素
            } else {
                heed = arr[middle] + 1;//中间数小于你要找的数,那么就把中间数当作你下一次要找的首元素
            }
        }
        if (!false) {
            System.out.println("没有找到你索要找的元素");
        }
    }
}

你可能感兴趣的:(java,算法,排序算法)