java循环/排序/查找

一、循环、排序、查找基础练习

1.求1~100奇数和偶数的和

  • 代码:
public class OddOrEvenSum {
    public static void main(String[] args) {
        int oddSum = 0;     //奇数之和
        int evenSum = 0;    //偶数之和
        for (int i = 1 ; i <= 100 ; i ++) {
            if (i % 2 == 1) {//判断奇数
                oddSum += i ;
            }else{      //不是奇数就是偶数
                evenSum += i;
            }
        }
        System.out.println("1~100之内奇数的和是: " + oddSum);
        System.out.println("1~100之内偶数的和是: " + evenSum);
    }
}
  • 运行结果:
    28882181.png

2.求水仙花数

  • 代码:
public class NarcNumber {
    public static void main(String[] args) {
        for (int i = 100 ; i <= 999 ; i ++ ) {
            int unit = i % 10;          //个位数
            int decade= i / 10 % 10;    //十位数
            int hundreds = i / 100;     //百位数
            int sum = unit * unit * unit + decade * decade * decade + hundreds * hundreds * hundreds;
            if (sum == i) {             //判断各个位数的立方和是否等于数的本身
                System.out.println(i);  //打印水仙花数
            }
        }
    }
}
  • 运行结果:
    java循环/排序/查找_第1张图片
    29715897.png

3.打印26的大小写字母

  • 代码:
public class PrintA_Z_a_z {
    public static void main(String[] args) {
        for (char a = 'a'; a <= 'z'; a ++) {
            System.out.print(a + " ");
        }
        System.out.println();

        for (char b = 'A'; b <= 'Z';b ++) {
            System.out.print(b + " ");
        }
        System.out.println();
    }
}
  • 运行结果:
    30060784.png

4.打印9*9乘法表

  • 代码:
public class MulList {
    public static void main(String[] args) {
        for (int i = 1;i <= 9; i ++) {
            for (int j = 1;j <= i; j ++) {
                System.out.print(j + " * " + i + " = " + j * i + "  ");
                if (i * j < 10) {   //多一个空格保证打印整齐
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }
}
  • 运行结果:
    java循环/排序/查找_第2张图片
    30184773.png

5.任意写一个数组,赋值,然后打印数组逆序后结果

  • 代码:
public class ReversalArray {
    public static void main(String[] args) {
        int[] arr = {1,23,12,11,66,34};
        arrReversal(arr);
        arrPrint(arr);
    }

    public static void arrReversal(int[] arr) {
        for (int max = arr.length - 1 , min = 0;min <= max; min ++,max --) {
            int temp = arr[min];
            arr[min] = arr[max];
            arr[max] = temp;
        }
    }

    public static void arrPrint(int[] arr) {
        if (arr == null) {
            System.out.println("数组为空");
            return;
        }
        System.out.print("[");
        for (int i = 0 ; i < arr.length - 1; i ++) {
            System.out.print(arr[i] + ",");
        }
        System.out.println(arr[arr.length - 1] + "]");
    }
}
  • 运行结果:
    30860055.png

6.练习排序算法

a.选择排序

  • 代码:
public class SelectSort {
    public static void main(String[] args) {
        int[] arr = {9,12,3,4,13,6};    //静态初始化数组
        selectSort(arr);    //调用选择排序方法
        arrPrint(arr);      //调用打印数组方法
    }

    public static void selectSort(int[] arr) {
        for (int i = 0;i < arr.length - 1; i ++) {
            for (int j = i + 1 ; j < arr.length ; j ++) {
                if (arr[j] < arr[i]) {  //如果前一个数比后一个数小则交换这两个数
                    int temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
    }

    public static void arrPrint(int[] arr) {
        System.out.print("[");
        for (int i = 0 ; i < arr.length-1 ; i ++) {
            System.out.print(arr[i] + ",");
        }
        System.out.println(arr[arr.length - 1] + "]");  
    }
}
  • 运行结果:
    31967288.png

b.冒泡排序

  • 代码:
public class BubbleSort {
    public static void main(String[] args) {
        int[] arr = {9,12,3,4,13,6};
        bubbleSort(arr);
        arrPrint(arr);
    }

    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 + 1] < arr[j]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }

    public static void arrPrint(int[] arr) {
        if (arr == null) {
            System.out.println("数组为空");
            return;
        }
        System.out.print("[");
        for (int i = 0 ; i < arr.length - 1; i ++) {
            System.out.print(arr[i] + ",");
        }
        System.out.println(arr[arr.length - 1] + "]");
    }
}
  • 运行结果:
    32530810.png

7.折半查找

  • 代码:
public class BinarySearch {
    public static void main(String[] args) {
        int[] arr = {1,2,4,10,11};  //静态定义数组
        System.out.println(binarySearch(arr,4));
    }

    public static int binarySearch(int[] arr,int key) {
        int min = 0;    //定义数组最小索引
        int max = arr.length - 1;   //定义数组最大索引
        int mid = 0;    //如果写成int mid = (min + max) / 2,mid变成一个常量
        while (min <= max) {
            mid = (min + max) / 2;
            if (key > arr[mid]) {   //如果查找的值比中间的数大
                min = mid + 1;      //将中间索引+1赋值给最小索引
            }else if (key < arr[mid]) {     //如果查找的值比中间的数小
                max = mid - 1;              //将中间索引-1赋值给最大索引
            }else{                          //否则查找到了
                return mid;                 //返回中间索引号
            }
        }
        return -1;      //循环后没有查询到指定的数,返回-1
    }
}
  • 运行结果:
    33301471.png

二、拓展练习

1.按照25个一行从大到小的顺序打印所有四位整数中个位+十位=百位+千位的整数

(线索:循环(9999到1000)、计数器控制换行(计数器%5==0))

  • 代码:
public class KiloEqual {
    public static void main(String[] args) {
        int count = 0;      //定义一个计数器
        for (int i = 9999; i >= 1000; i --) {   //反向遍历1000~9999
            int unit = i % 10;              //个位数
            int decade = i / 10 % 10;       //十位数
            int hundreds = i / 100 % 10;    //百位数
            int kilo = i / 1000;            //千位数
            if (unit + decade == hundreds + kilo) {     //如果个位+十位=百位+千位
                System.out.print(i + " ");              //打印出符合要求的数
                count ++;                               //计数器+1
                if (count % 25 == 0) {                  //每5行换行打印
                    System.out.println();
                }
            }
        }
    }
}
  • 运行结果:
    java循环/排序/查找_第3张图片
    37538707.png

2.倒着打印九九乘法表

  • 代码:
public class ReverseMulList {
    public static void main(String[] args) {
        for (int i = 1;i <= 9; i ++) {
            for (int j = 9;j >= i ; j --) {
                System.out.print(j + " * " + i + " = " + i * j + "  ");
                if (i * j < 10) {   //多一个空格保证打印整齐
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }
}
  • 运行结果:
    java循环/排序/查找_第4张图片
    37858821.png

3.分析以下需求,并用代码实现:(扩展)

(1)键盘录入6个int类型的数据存数数组arr中
(2)将arr数组中的内容反转
(3)将翻转后的数组角标为奇数的互相交换 1和3换, 3和5换,以此类推
例如:
int[] arr={16,4,5,7,9,11}
反转:arr={11,9,7,5,4,16}
奇数的互相交换: arr={11,5,7,16,4,9}

  • 代码:
import java.util.Scanner;
public class FancyArrayReverse {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] arr = new int[6];     //动态定义一个整型数组,有6个元素
        System.out.println("请输入6个数整数:");
        for (int i = 0 ; i < 6 ; i++) {     //键盘录入6个整数
            System.out.println("第 " + (i + 1) + "个整数");
            arr[i] = sc.nextInt();
        }
        System.out.println("数组内容");
        arrPrint(arr);              //打印数组
        System.out.println("反转数组");
        arrReverse(arr);            //反转数组
        arrPrint(arr);              //数组反转后打印
        System.out.println("花式反转数组");
        fancyArrayReverse(arr);     //奇数索引的数进行反转
        arrPrint(arr);              //花式反转后打印数组
    }

    public static void arrReverse(int[] arr) {      //反转数组方法
        for (int min = 0,max = arr.length -1 ; min <= max ; min ++,max --) {
            int temp = arr[min];
            arr[min] = arr[max];
            arr[max] = temp;
        }
    }

    public static void fancyArrayReverse(int[] arr) {       //花式反转数组方法
        for (int i = 1; i < arr.length - 2 ; i += 2 ) {
            int temp = arr[i];
            arr[i] = arr[i + 2];
            arr[i + 2] = temp;
        }
    }

    public static void arrPrint(int[] arr) {        //打印数组方法
        if (arr == null) {
            System.out.println("数组为空");
            return;
        }
        System.out.print("[");
        for (int i = 0 ; i < arr.length - 1; i ++) {
            System.out.print(arr[i] + ",");
        }
        System.out.println(arr[arr.length - 1] + "]");
    }
}
  • 运行结果:
    java循环/排序/查找_第5张图片
    37284238.png

你可能感兴趣的:(java循环/排序/查找)