数组的应用:Arrays类,冒泡排序,稀疏数组
数组的应用
Arrays类
其他工具可查看JDK帮助文档
package Array;
import java.util.Arrays;
public class Demon7 {
public static void main(String[] args) {
int[] a = {2,87,458,21,54,87,12,9};
System.out.println(a); //[I@14ae5a5
System.out.println(Arrays.toString(a)); //Arrays方法提供的,把数组变为String类型
//结果为[2, 87, 458, 21, 54, 87, 12, 9]
Arrays.sort(a); //排序数组 升序
System.out.println(Arrays.toString(a)); //[2, 9, 12, 21, 54, 87, 87, 458]
}
}
冒泡排序
是一种最出名的排序算法。
- 比较数组中,相邻的两个元素,如果第一个比第二个大,则交换他们的位置
- 每次比较都会产生一个最大或最小的数字
- 下一轮则可以上一次排序
- 一次循环,直到结束
package Array;
import java.util.Arrays;
public class Demon8 {
public static void main(String[] args) {
int[] a = {7,6,5,4,9,8};
System.out.println(Arrays.toString(a));
sort(a);
System.out.println(Arrays.toString(a));
}
//冒泡排序
public static int[] sort(int[] a){
int temp = 0;
for (int i = 0; i < a.length-1; i++) {
for (int j = 0; j < a.length-1-i; j++) { //这里length-1是因为下面存在j+1,正常遍历的情况下,j<length即可。
//-i是因为j循环一次之后,就排出一个最大或最小值,故可以减少一次循环 ??
//可能本次未排出一个,但下次会排除两个,总的来说一次循环排出一个 ??
//尚不了解比较次数的数学原理,我只知道循环一次,下次循环可少比较一次
if (a[j]>a[j+1]){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
return a;}
}
稀疏数组

在二维数组中,提取少数有效值的,做到压缩数组。
计算有多少个有效值:遍历原数组,如果元素不等于0,则sum数加1,获得稀疏数组的行数。
创建稀疏数组 Array[sum] [3]
确定有效值在原数组中的位置并记录在稀疏数组中:int count = 0;遍历原数组,如果元素不等0,count+1,稀疏数组[count] [0]记录该元素的a,[count] [1]记录该元素的j,[count] [2]记录该元素的值。
浙公网安备 33010602011771号