佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1442|回复: 15

java script coding help

[复制链接]
发表于 24-11-2013 06:16 PM | 显示全部楼层 |阅读模式
<html>
        <head>
                <script>                       
                        function sort(items){
                                for(var i =0;i<items.length-1;i++){
                                        for (var j=i+1;j<items.length; j++){
                                                if(items[i]>= items[j])
                                                        {
                                                                var temp =items[i]
                                                                items[j] = temp                       
                                                        }
                                        }
                                }       
                                return items
                        } console.log(sort([2,7,1,6]))
                </script>
        </head>       
        <body>               
        </body>
</html>

the answer is 2,7,1,6
我不明白为什么会得到这个答案。

<html>
        <head>
                <script>                       
                        function sort(items){
                                for(var i =0;i<items.length-1;i++){
                                        for (var j=i+1;j<items.length; j++){
                                                if(items[i]>= items[j])
                                                        {
                                                                var temp =items[i]
                                                                temp = items[j]               
                                                        }
                                        }
                                }       
                                return items
                        } console.log(sort([2,7,1,6]))
                </script>
        </head>       
        <body>               
        </body>
</html>
the answer is 2,7,7,7
我不明白为什么会得到这个答案。

<html>
        <head>
                <script>                       
                        function sort(items){
                                for(var i =0;i<items.length-1;i++){
                                        for (var j=i+1;j<items.length; j++){
                                                if(items[i]>= items[j])
                                                        {
                                                                var temp =items[i]
                                                                items[i] = items[j]
                                                                items[j] = temp                       
                                                        }
                                        }
                                }       
                                return items
                        } console.log(sort([2,7,1,6]))
                </script>
        </head>       
        <body>               
        </body>
</html>

the answer is 1,2,6,7
我不明白为什么会得到这个答案。

这3个coding有什么不同。
回复

使用道具 举报


ADVERTISEMENT

发表于 24-11-2013 09:58 PM | 显示全部楼层
这3个coding有什么不同。

你一句一句 alert 出来看不就知道了咯  = = "


回复

使用道具 举报

发表于 25-11-2013 09:39 AM | 显示全部楼层
首先,发代码时请用 <> 的代码模式。

其次,我个人很讨厌 for(...){ 这种coding style,看到这种不把 curly bracket 对齐的 coding style 我会怒气值飙升100%同时继续观看你的代码的意愿锐减1000%。原本你用什么 coding style 是你的自由,但是既然你特地向我发信息求救,我觉得我有权发一下牢骚。

接下来,请将 <html>,<head> 和 <body> tag 去掉,这些是无关紧要的东西,大家只对你的 Javascript 有兴趣,而不是对你的 html tag 感兴趣。

最后,我对 Javascript 并不熟悉,但是基于它的语言和C++差不多,所以我可以尝试看一看,但是我不会针对Javascript 的 syntax error 做出指正,因为我也不懂。我会把它当作C/C++来看,请自行注意 Syntax 的错误和差别。

  1. function sort(items)
  2. {
  3.         for(var i=0;i<items.length-1;i++)
  4.         {
  5.                 for (var j=i+1;j<items.length; j++)
  6.                 {
  7.                         if(items[i]>=items[j])
  8.                         {
  9.                                 var temp =items[i]
  10.                                 items[j] = temp                       
  11.                         }
  12.                 }
  13.         }      
  14.         return items
  15. }
  16. console.log(sort([2,7,1,6]))
复制代码
首先,
  1. if(items[i]>=items[j])
复制代码
是错的。如果items[ i ] == items[j]你根本不需要进行swapping。所以使用 >= 是错的。你只需要使用 > 就行了。

其次,
  1. var temp =items[ i ]
  2. items[j] = temp
复制代码
也是错的,这段代码基本上就是 items[j] = items[ i ] 的冗余版 (其实我是想说“脱裤子放屁版”,但那太粗俗了)。这并不是Swapping,而是把 items[ i ] 的内容写进 items[j] 里面,所以不管比较出来的结果谁比谁大,原本的内容都照旧被写进去,所以出来的答案永远和原本的数据一样。

第二个版本基本上和第一个版本相反,永远都是把 items[j] 写进 items[ i ] 里面,结果就变成接下来的比较中,items[ i ](也就是 7)永远大于 items[j],所以7就不断地被写进items[j]里面,所以你就会看到 2,7,7,7 了。

第三个版本才是正确的swapping。但是我不知道你的Sort()到底是要从小到大来编排,还是反之,但你的代码的确是将数据从小到大排列了。简单来讲,就是 比较A和B,如果A比B大,就将A和B对调(变成B大于A),这的确就是从小到大的排列法。 本帖最后由 geekman 于 25-11-2013 09:42 AM 编辑

评分

参与人数 1人气 +5 收起 理由
数学神 + 5 赞同!我也是喜欢 curly bracket 对齐~!

查看全部评分

回复

使用道具 举报

发表于 25-11-2013 01:47 PM | 显示全部楼层

  function sort(items) {
            for (var i = 0; i < items.length - 1; i++) {
                for (var j = i + 1; j < items.length; j++) {
                    alert("items i :" + items[i]);
                    alert("items j :" + items[j]);
                    var bianhua = (items[i] >= items[j]) ? 'true 会改变' : "false 不会改变";
                    alert("if " + items[i] + ">=" + items[j] + '  ' + bianhua);
                    var temp = JSON.parse(JSON.stringify(items));
                    if (items[i] >= items[j]) {  
                        items[j] = items[i]
                    }
                    alert("变化前:" + temp + '   变化后 :' + items);
                }
            }
            return items
        }
        alert(sort([2, 7, 1, 6])); //2777


你可以看看其中的变化,然后想一想  。
js 本身有sort 的方法了,估计楼主有另外用途吧 ^^
回复

使用道具 举报

发表于 26-11-2013 03:35 PM | 显示全部楼层
geekman 发表于 25-11-2013 09:39 AM
首先,发代码时请用  的代码模式。

其次,我个人很讨厌 for(...){ 这种coding style,看到这种不把 curl ...

赞同!我也是喜欢 curly bracket 对齐~
不喜欢 for(...) {

小 project 还好...
遇到大 project,一眼看下去,左边只有 },很难找到它的 {
看到很乱

再来,我想说,你很厉害
几乎大部分的难题你都解答得到!而且还很详细!
厉害!

回复

使用道具 举报

发表于 26-11-2013 03:59 PM | 显示全部楼层
数学神 发表于 26-11-2013 03:35 PM
赞同!我也是喜欢 curly bracket 对齐~
不喜欢 for(...) {

谢谢你的支持~

我每当看到Programming相关的问题,就会不由自主的想理解并克服它,渐渐地就养成Mind Coding的习惯。

回复

使用道具 举报

Follow Us
发表于 14-1-2015 12:48 PM | 显示全部楼层
geekman 发表于 26-11-2013 03:59 PM
谢谢你的支持~

我每当看到Programming相关的问题,就会不由自主的想理解并克服它,渐渐地 ...

你好, 请问你是JAVA Programmer 吗?

我有一个软件的问题急需帮忙, 希望你可以PM 我联络号码。

谢谢你了

回复

使用道具 举报

发表于 14-1-2015 02:34 PM | 显示全部楼层
nickong12345 发表于 14-1-2015 12:48 PM
你好, 请问你是JAVA Programmer 吗?

我有一个软件的问题急需帮忙, 希望你可以PM 我联络号码。

我是C++ Programmer,Java我只懂一些罢了。。。

回复

使用道具 举报


ADVERTISEMENT

发表于 14-1-2015 03:46 PM | 显示全部楼层
geekman 发表于 14-1-2015 02:34 PM
我是C++ Programmer,Java我只懂一些罢了。。。

请问你是那里的人? 方便出来面谈?
可以跟你学习学习。
回复

使用道具 举报

发表于 14-1-2015 06:17 PM | 显示全部楼层
nickong12345 发表于 14-1-2015 03:46 PM
请问你是那里的人? 方便出来面谈?
可以跟你学习学习。

我是Johor人,Java的话,我懂得不多,不敢教人,哈哈
回复

使用道具 举报

发表于 15-1-2015 12:18 AM | 显示全部楼层
geekman 发表于 14-1-2015 06:17 PM
我是Johor人,Java的话,我懂得不多,不敢教人,哈哈

噢, 我在吉隆坡的。 那就没办法了, 我需要另想办法
回复

使用道具 举报

发表于 15-1-2015 01:11 AM | 显示全部楼层
我也是johor的.SKudai
你呢 ? johor 哪里人?
交流一下呗 ^^
回复

使用道具 举报

发表于 15-1-2015 10:02 AM | 显示全部楼层
keatkeat87 发表于 15-1-2015 01:11 AM
我也是johor的.SKudai
你呢 ? johor 哪里人?
交流一下呗 ^^

我在Batu Pahat。我很宅的,没有很好的理由很少出门,例如快熟面吃完了不得不出去补货,哈哈哈。

欢迎在论坛上交流吧。只是最近软件开发区很冷清,发的帖子都是招生意的占多,发问问题的很少,我就很少来这里了,要不是nickong12345回我的帖,我一时也不会来这里逛。

回复

使用道具 举报

发表于 26-4-2015 08:55 PM | 显示全部楼层
The third code is Bubble sort algorithm. I will suggest you print items array in each loop. Because it can let you understand step from algorithm. Please refer: http://en.wikipedia.org/wiki/Bubble_sort
回复

使用道具 举报

发表于 1-5-2015 08:21 PM | 显示全部楼层
数学神 发表于 26-11-2013 03:35 PM
赞同!我也是喜欢 curly bracket 对齐~
不喜欢 for(...) {

请问,javascript有什么fix error的方案吗?
回复

使用道具 举报

发表于 1-5-2015 08:22 PM | 显示全部楼层
keatkeat87 发表于 24-11-2013 09:58 PM
这3个coding有什么不同。

你一句一句 alert 出来看不就知道了咯  = = "

请问,javascript有什么fix error的方案吗?
谢谢。
回复

使用道具 举报


ADVERTISEMENT

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 16-8-2025 11:57 AM , Processed in 0.146299 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表