JAVA中排序问题

①一维数组的冒泡排序

冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。

 

public static void sort(int[] values) {

     int temp;

    for (int 0; values.length; ++i) {

      for (int 0; values.length 1; ++j) {

          if (values[j] values[j 1]) {

            temp values[j];

            values[j] values[j 1];

            values[j 1] temp;}

}

}

}

②一维数组的选择排序

static void sort(int[] nums) {

for (int 0; nums.length; i++) {

    for (int 1; nums.length; j++) {

      // 这里是按降序排列

      if (nums[i] nums[j]) {

            int tem nums[i];

            nums[i] nums[j];

            nums[j] tem;

}

}

}

}

③二维数组冒泡排序

public class sort2 {

   public static void main(String[] args) {

            int 0, 0, temp 0;

            int[][] nums1 34, 1, 22, }, 28, 98, 15, 32 },

            33, -5, 17, 41 };

            int rows nums1.length;// 设rows为数组的行数

            int cols nums1[0].length;// 设cols为数组的列数

            int qty rows cols;// 设qty为数组所有元素个数

 

           

            System.out.println("原始二维数组:");

           for (i 0; rows; i++) {

                 for (j 0; cols; j++) {

                     System.out.print(nums1[i][j] ");

        }

   System.out.println();

}

 

 

  int[] nums2 new int[qty];// 创建一个与二维数组大小一样的新的一维数组

  for (i 0; rows; i++) {

      for (j 0; cols; j++) {

           nums2[i cols j] nums1[i][j];// 把二维数组的每个值依次赋给一维数组。注意:一维数组的位置表示:[i*clos+j](即第i行*总列数cols+该行第j个)

     }

}

 

for (i 0; qty; i++) {

      for (j 1; qty; j++) {

          if (nums2[i] nums2[j]) {

              temp nums2[i];

              nums2[i] nums2[j];

              nums2[j] temp;

      }

  }

}

 

 

for (i 0; rows; i++) {

        for (j 0; cols; j++) {

           nums1[i][j] nums2[i cols j];

    }

}

 

// 打印已经按行,列排好序的二维数组

System.out.println("排好序的二维数组:");

  for (i 0; rows; i++) {

     for (j 0; cols; j++) {

          System.out.print(nums1[i][j] ");

        }

   System.out.println();

     }

   }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值