黑马程序员技术交流社区

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

作者: librazeng    时间: 2013-5-18 10:59
标题: 快速排序的问题
本帖最后由 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]表示的不是同一个数吗?



作者: 徐启坤    时间: 2013-5-18 11:06
int temp=arr[x];
arr[x]=min;
min=temp;     //这条语句并没有把arr[x]赋值给arr[Index],改为arr[Index]=temp;
作者: librazeng    时间: 2013-5-18 11:17
徐启坤 发表于 2013-5-18 11:06
int temp=arr[x];
arr[x]=min;
min=temp;     //这条语句并没有把arr[x]赋值给arr,改为arr=temp; ...

哦,谢谢!




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