Day10-冒泡-稀疏数组

冒泡排序

 
import java.util.Arrays;
 public class Demo05 {
     public static void main(String[] args) {
         int[] array = {1, 90, 0, 3, 2, 6};
 ​
         int[] maopao = maoPao(array);
         System.out.println(Arrays.toString(maopao));
     }
 ​
     public static int[] maoPao(int[] a) {
         int temp = 0;
 ​
 ​
         for (int i = 0; i < a.length - 1 ; i++) {
             boolean flag = false;
             for (int j = 0; j < a.length - 1 - i; j++) {
                 if (a[j+1] < a[j]){
                     temp = a[j];//大给别量
                     a[j] = a[j+1];//小给大的
                     a[j+1] = temp;//别量给小
                     flag = true;
                 }
             }
             if (flag==false){
                 break;
             }
           }
         return a;
     }
 }

  

  • 具体思想 

稀疏数组

 public class Demo06 {
     public static void main(String[] args) {
         //创建一个11行11列的二位数组   0:没有棋子 1:黑棋 2:白棋
         int[][] array1 = new int[11][11];
         array1[1][2] = 1;
         array1[2][3] = 2;
         //输出原来的数组
         System.out.println("输出原始数组:");
         for (int i = 0; i < array1.length; i++) {
 ​
             for (int j = 0; j < array1.length; j++) {
                 System.out.print(array1[i][j] + "\t");
             }
             System.out.println();
         }
         System.out.println("========================================");
         //转换稀疏数组,获取有效值个数
         int sum = 0;
         for (int i = 0; i < 11; i++) {
             for (int j = 0; j < 11; j++) {
                 if (array1[i][j] != 0){
                     sum++;
                 }
             }
         }
         System.out.println("有效值个数 = "+sum);
         //创建稀疏数组array2,弄出头行
         int[][] array2 =  new int[sum+1][3];
         array2[0][0] = 11;
         array2[0][1] = 11;
         array2[0][2] = sum;
         //定义一个存放有效值行的数
         int count = 0;
        //把原二维数组的非0元素存放进去
         for (int i = 1; i < array1.length; i++) {
             for (int j = 0; j <array1[i].length; j++) {//array1[i].length获取数组第i的长度
                 if (array1[i][j] != 0){
                     count++;
                     array2[count][0] = i;
                     array2[count][1] = j;
                     array2[count][2] = array1[i][j];
                 }
             }
         }
         //输出稀疏数组
         System.out.println("输出稀疏数组:");
         for (int i = 0; i < array2.length; i++) {
                 System.out.println(array2[i][0] + "\t" + array2[i][1] + "\t"
                         + array2[i][2] + "\t");
             }
         System.out.println("========================================");
         //还原稀疏数组,定义一个数组3
         int[][] array3 = new int[array2[0][0]][array2[0][1]];
         for (int i = 1; i < array2.length; i++) {
             array3[array2[i][0]][array2[i][1]] = array2[i][2];
         }
         //输出还原的数组
         for (int i = 0; i < array3.length; i++) {
             for (int j = 0; j < array3[i].length; j++) {
                 System.out.print(array3[i][j] + "\t");
             }
             System.out.println();
         }
     }
 }
 

  

posted @ 2021-07-10 21:38  浅mo年华  阅读(31)  评论(0)    收藏  举报