黑马程序员技术交流社区

标题: 排序的问题 [打印本页]

作者: 梁宝昌    时间: 2014-8-28 20:29
标题: 排序的问题
现在学习到数组 嵌套循环那里 对选择排序和冒泡排序有些混淆 请大神赐教
作者: 她只是过客    时间: 2014-8-28 21:18
这是我做过的一道题,希望对你有帮助,我来理解的话,选择排序就是角标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. }
复制代码

代码比较简单,也不多,直接记住固定格式也可以
作者: 冷锋也温柔    时间: 2014-8-31 23:19
这么详细 借用了  谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2