冒泡排序和稀疏数组
冒泡排序
双层循环,外层冒泡轮数,内层依次比较
public class B {
public static void main(String[] args) {
int[] a= {12,45,65,21,89};
System.out.pr
intln(Arrays.toString(sort(a)));
}
/*冒泡排序
*比较数组中两个相邻的元素,如果第一个数大于第二个数,就交换位置
*每一次比较都会产生出一个最大或者最小的数字
*下一轮就少一次排序
*依次循环,直到结束
*/
public static int[] sort(int[] a) {
int t=0;
for (int i = 0; i < a.length-1; i++) {
for (int j = 0; j < a.length-1-i; j++)
{
if(a[j+1]>a[j]) {
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
return a;
}
}
稀疏数组
数组中大部分元素为相同数值
处理方式:记录数组中有几行几列,有多少个不同的数值
把具有不同数值的元素和行列和值记录在一个小规模的数组中,从而缩小程序的规模
public static void main(String[] args) {
int[][] a1=new int[11][11];
a1[1][2]=1;
a1[2][3]=1;
//输出原始数组
for(int[] ints:a1) {
for(int anInt:ints) {
System.out.print(anInt+" ");
}
System.out.println();
}
System.out.println("=================");
//转换为稀疏数组
//获取有效值的个数
int sum=0;
for (int i = 0; i < a1.length; i++) {
for (int j = 0; j < a1.length; j++) {
if(a1[i][j]!=0) {
sum++;
}
}
}
System.out.println(sum);
System.out.println("=================");
//创建稀疏数组的数组
int[][] a2=new int[sum+1][3];
a2[0][0]=11;
a2[0][1]=11;
a2[0][2]=sum;
//遍历二维数组,将非零的元素放在稀疏数组中
int count=0;
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
if(a1[i][j]!=0) {
count++;
a2[count][0]=i;
a2[count][1]=j;
a2[count][2]=a1[i][j];
}
}
}
for (int i = 0; i < a2.length; i++) {
System.out.println(a2[i][0]+" "+a2[i][1]+" "+a2[i][2]);
System.out.println();
}
}
//还原稀疏数组
int[][] a3=new int[a2[0][0]][a2[0][1]];
for (int i = 1; i < a2.length; i++) {
for (int j = 0; j < 3; j++) {
a3[a2[i][0]][a2[i][1]]=a2[i][2];
}
}
for(int[] ints:a3) {
for(int anInt:ints) {
System.out.print(anInt+" ");
}
System.out.println();
}
}
输出结果:
0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
=================
2
=================
11 11 2
1 2 1
2 3 1
0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0