A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梁宝昌 中级黑马   /  2014-8-28 20:29  /  1099 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

现在学习到数组 嵌套循环那里 对选择排序和冒泡排序有些混淆 请大神赐教

2 个回复

倒序浏览
这是我做过的一道题,希望对你有帮助,我来理解的话,选择排序就是角标1和2、3、4、5...逐个进行比较,然后判断性的置换,接着就是下一轮,角标2和3、4、5...逐个比较,然后判断性的置换,一直到最后一个角标停止。
冒泡排序就是角标1和2比,然后判断性置换,角标2和3比,判断性置换,角标3和4比.....一直比到长度的次数。
  1. public class Test2 {

  2.         public static void main(String[] args) {
  3.                 // 建立一个数组
  4.                 int[] arr = { 73, 56, 89, 67, 25, 58, 70, 13 };
  5.                 // 先输出一次原数组
  6.                 print(arr);
  7.                 // 调用冒泡排序
  8.                 sort(arr);
  9.                 // 调用选择排序
  10.                 select(arr);
  11.                 // 输出排序后的数组
  12.                 print(arr);
  13.         }

  14.         // 选择排序
  15.         public static void select(int[] arr) {
  16.                 for (int i = 0; i < arr.length; i++) {
  17.                         for (int j = i; j < arr.length; j++) {
  18.                                 if (arr[i] > arr[j]) {
  19.                                         // 比较大小后进行置换
  20.                                         arr[i] ^= arr[j];
  21.                                         arr[j] ^= arr[i];
  22.                                         arr[i] ^= arr[j];
  23.                                 }
  24.                         }
  25.                 }
  26.         }

  27.         // 冒泡排序
  28.         public static void sort(int[] arr) {
  29.                 for (int i = 0; i < arr.length; i++) {
  30.                         for (int j = 0; j < arr.length - 1 - i; j++) {
  31.                                 if (arr[j] > arr[j + 1]) {
  32.                                         int temp = arr[j];
  33.                                         arr[j] = arr[j + 1];
  34.                                         arr[j + 1] = temp;
  35.                                 }
  36.                         }
  37.                 }
  38.         }

  39.         // 打印数组
  40.         public static void print(int[] arr) {
  41.                 System.out.print("[");
  42.                 for (int i = 0; i < arr.length; i++) {
  43.                         if (i != arr.length - 1)
  44.                                 System.out.print(arr[i] + ",");
  45.                         else
  46.                                 System.out.println(arr[i] + "]");
  47.                 }
  48.         }

  49. }
复制代码

代码比较简单,也不多,直接记住固定格式也可以
回复 使用道具 举报
这么详细 借用了  谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马