黑马程序员技术交流社区

标题: 关于那个数组选择排序的问题 [打印本页]

作者: everyuda520    时间: 2016-3-8 21:17
标题: 关于那个数组选择排序的问题
class Arry {
         public static void main(String[] args) {
             int[] arr ={55,22,44,33,11,77,66};
             //blee(arr);
             slee(arr);
             print(arr);
         }
         public static void slee(int[] arr) {
                 for (int i = 0; i < arr.length-1; i++) {
                        for (int j = 1+i; j < arr.length; j++) {
                                if (arr[i]>arr[j]) {
                                        int tamp =arr[i];
                                        arr[i] = arr [j];
                                        arr[j] = tamp;    // 为什么要定义一个变量tamp 其它的基本都可以看到,这里特别绕。。

                                }
                        }
                }
         }
         public static void print(int[] arr) {
                 for (int i = 0; i < arr.length; i++) {
                        System.out.print(arr[i] + " ");
                }
         }
}
那个tamp 太绕了完全搞不懂,求助。




作者: 萌萌的_O30IH    时间: 2016-3-8 22:21
你左拿苹果,右手拿香蕉,把苹果香蕉交换要分几步,
1,左手苹果放桌上
2,右手把香蕉放左手上
3,右手从桌上拿起来苹果
temp就相当于那张桌子。
作者: fagug    时间: 2016-3-9 00:17
temp是为了做两个数互换的临时存储变量

temp.jpg (17.37 KB, 下载次数: 61)

temp.jpg

作者: docwei    时间: 2016-3-9 00:44
tamp,准确的应该写成temp,暂时变量或者 中间变量,中间那是数值交换,老师讲过好几种方法进行数值交换,引入第三方变量算一种,还有使用异或两次(左边aba,右边ab),或者加减法运算也可以
作者: everyuda520    时间: 2016-3-9 08:10
是想取什么值
作者: 超人d咖啡也加糖    时间: 2016-3-9 12:24
=是赋值操作,会把原值覆盖掉,而temp是一个媒介,在第一个数被第二个数覆盖之前保留第一个数的值用于交换。




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