个人技术分享

案例一:数组存储素数

创建一个数组,存储2~100之间的素数:

 思路一:

        先创建容量足够大的数组,再遍历找寻 1~100 之间的素数,最后把他们存贮在数组里并输出;

//数组存储 2~100 之间的素数
class ArrayPrime{
    public static void main(String[] args){
        int[] array=new int[100];            //动态初始化一个较长的数组

        int index=0;
        c1:for(int a=2;a<=100;a++){
           c2: for(int b=2;b<a;b++){
                if(a%b==0){
                    continue c1;
                }
            }
            array[index++]=a;                //将素数存储在数组里
            }

            for(int value:array){
                if(value!=0){               //输出不为 0 的数据
                    System.out.println(value);
                }
            }
        }
    }
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=5326:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\baciccode\out\production\baciccode Maycode.ArrayPrime
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

Process finished with exit code 0

思路二:

        我们先找到数组个长度,再遍历找到素数并存储到数组中,最后输出;

//数组存储 2~100 之间的素数
class ArrayPrimeTwo{
    public static void main(String[] args){
        int x=0;                                //标记素数的个数,便于下面创建数组;
        c1:for(int a=2;a<=100;a++){
            c2: for(int b=2;b<a;b++){
                if(a%b==0)
                    continue c1;
            }
            x++;
        }

        int[] array=new int[x];                 //创建长度为 x 的数组
        int index = 0;                          //数组的标记,记录数组的长度
        c1:for(int a=2;a<=100;a++){
            c2: for(int b=2;b<a;b++){
                if(a%b==0)
                    continue c1;
            }
            array[index++]=a;                   //存储素数,且只有存储数据的时候索引才会增加
        }

        for(int value:array){                   //增强循环输出
            System.out.print(value+"\t");
            }
    }
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=14362:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\baciccode\out\production\baciccode Maycode.ArrayPrime
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

Process finished with exit code 0

 

案例二:排序

思路一:冒泡排序

冒泡排序:两两比较,小前大后;

 例如:array [ 7 ] ={ 3 , 11 , 66 , 53 , 8 , 23 , 99 } ,

第一趟/轮:3 11 53 8 23 66 99 ;比较了  6 次;(将 最大数 沉底)

第二趟/轮:3 11 8 23 53 66 99 ;比较了  5 次;(最大数就不用参与比较了)

第三趟/轮:3 8 11 23 53 66 99 ;比较了  4 次;(虽然排好了,但计算机不知道,还得继续)

第四趟/轮:3 8 11 23 53 66 99 ;比较了  3 次;

第五趟/轮:3 8 11 23 53 66 99 ;比较了  2 次;

第六趟/轮:3 8 11 23 53 66 99 ;比较了  1 次;

第七趟/轮:3 8 11 23 53 66 99 ;只剩一个数 :3 不用比较,即第七躺不需要,总共就 6 趟 ;

另外,我们可以知道,每一轮排序都能找到对应轮数个的较大的数,

如第一轮能找到最大的数,第二轮能找到最大的两个数,第三轮能找到最大的三个数......

需要两个循环,一个循环控制轮数,另一个控制每轮次数,而且 循环数 + 每轮数 = 长度 - 1 ;

代码如下:

//排序
class ArrangementArray{
    public static void main(String[] args){
        int[] array={11,3,66,53,8,23,99};
            for(int a=0;a<array.length-1;a++){
                for(int b=0;b<array.length-a-1;b++){
                    if(array[b]<=array[b+1]){
                        int x=array[b];
                        array[b]=array[b+1];
                        array[b+1]=x;
                    }
                }
            }
            for(int value:array){
                System.out.println(value);
            }
    }
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=3081:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\baciccode\out\production\baciccode Maycode.ArrangementArray
99
66
53
23
11
8
3

Process finished with exit code 0