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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© librazeng 中级黑马   /  2013-5-18 10:59  /  986 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 librazeng 于 2013-5-18 11:38 编辑

关于快速排序的问题,请看代码:
  1. public class FastSort {

  2.         /**快速排序
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                 int[] arr={43,65,88,63,44,2,578,8,56,4,66};
  7.                 fastSort(arr);
  8.                 for(int i=0;i<arr.length;i++){
  9.                         System.out.print(arr[i]+" ");
  10.                 }
  11.         }

  12.         private static void fastSort(int[] arr) {
  13.                 for(int x=0;x<arr.length-1;x++){
  14.                         int min=arr[x];
  15.                         int Index=x;
  16.                         for(int y=x+1;y<arr.length;y++){
  17.                                         if(min>arr[y]){
  18.                                                 min=arr[y];
  19.                                                 Index=y;
  20.                                         }
  21.                         }
  22.                         int temp=arr[x];
  23.                         arr[x]=arr[Index];
  24.                         arr[Index]=temp;
  25.                 }
  26.         }
  27. }
复制代码
结果:2 4 8 43 44 56 63 65 66 88 578
但我把后面的代码做了一点修改:
  1. int temp=arr[x];
  2.                         arr[x]=min;
  3.                         min=temp;
复制代码
结果:2 2 2 2 2 2 4 4 4 4 66
请问这是为什么?min和arr[Index]表示的不是同一个数吗?


2 个回复

正序浏览
徐启坤 发表于 2013-5-18 11:06
int temp=arr[x];
arr[x]=min;
min=temp;     //这条语句并没有把arr[x]赋值给arr,改为arr=temp; ...

哦,谢谢!
回复 使用道具 举报
int temp=arr[x];
arr[x]=min;
min=temp;     //这条语句并没有把arr[x]赋值给arr[Index],改为arr[Index]=temp;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马