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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

李超杰

初级黑马

  • 黑马币:10

  • 帖子:9

  • 精华:0

© 李超杰 初级黑马   /  2014-4-30 12:40  /  1364 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 czwanglei 于 2014-6-7 09:28 编辑

  string[] ls = { "3", "a", "8", "haha" };
            for (int i = 0, j = ls.Length - 1; i < j; i++, j--)
            {
                string temp = "";
                temp = ls;
                ls = ls[j];
                ls[j] = temp;
            }
            for (int i = 0; i < ls.Length;i++ )
            {
                Console.WriteLine(ls);
            }
            Console.ReadLine();

对于翻转问题一直很迷,还有冒泡排序问题,求解释

点评

解决了需要设置提问结束啊,,,,,,,,,,,,  发表于 2014-5-10 22:40

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

9 个回复

倒序浏览
   temp = ls[i];
   ls[i] = ls[j];
   ls[j] = temp;这个知道是什么意思 就是前面的for语句里面就不明白了

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
本帖最后由 阿斌 于 2014-4-30 13:54 编辑

        首先看for循环,初始化语句是int i = 0, j = ls.Length - 1。可以看出,i和j此时分别是ls数组中第1个字符串和最后一个字符串的索引。为下面进行的翻转操作做准备。
        第二看for循环的条件,i < j 。翻转其实就是将前后字符串的位置对调,对于一个长度为n的数组,要实现前后元素位置对调,只需要对调n/2次(如果n/2是小数,则将小数点后的数字抹去)。
        举个栗子,如果数组长度是6,那么需前后对调23次,其过程就是第“0”个元素跟第“5”个对调,第“1”个跟第“4”个对调,第“2”个跟第“3”个对调。(注意:第“0”个,第“5”个这里都是指数组的索引)
        回头看看for循环,初始化语句中 i 其实就是代表左边第“0”个元素,j 就是代表右边的第“5”个元素。随着 i 自增(i++)和 j 自减(j--),其实就是上面一段话中的“0”和“5”对调 -> 然后是“1”和“4”对调 -> 最后是“2”和“3”对调。你看左边的数是不是始终小于右边的数?所以循环条件也就是 i < j 了。

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
如果先反转的话,你这个也没得什么错啊,其实冒泡也差不多,就不过是双层循环而已
回复 使用道具 举报
这个要一步步结合数据看 最好可以用VS编译工具 一步步执行 感觉应该好理解点 刚开始都很迷惑的 坚持住
回复 使用道具 举报
翻转把它想象成一个圈,转圈赋值,冒泡排序就形象的想象成泡泡越往上数值越大
回复 使用道具 举报
当有人给你回复哦,请及时把帖子编辑为提问结束,这样版主才给你加技术分
回复 使用道具 举报
打开VS把上面的代码敲上。在for前面加个断点 !F10
回复 使用道具 举报
其实你应该分开嵌套,这样看起来会更加只管好懂一些
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马