案例一:数组存储素数
创建一个数组,存储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