java吧 关注:1,240,447贴子:12,714,472
  • 15回复贴,共1

排序的一个问题 想不通啊

只看楼主收藏回复

一般情况下 选择排序我是这样写:
for(int x = 0 ; x < num.length-1 ; x++){
for(int y = x ; y <num.length ; y++){
if(num[x] < num[y]){
int temp = num[x];
num[x] = num[y];
num[y] = temp;
但是经常把第二行写成
for(int y = 0 ; y < num.length ; y++){
竟然也能排出来 用笔算了下 发现它看着杂乱的情况下就把顺序排好了 也不算得上冒泡排序 百思不得解 求大神指教


1楼2014-06-20 11:02回复
    everybody


    2楼2014-06-20 11:26
    回复
      我们因彼此懂得而惺惺相惜;我们因惺惺相惜而心念相应;我们因心念相应而无视距离。我们不能没有期望,没有梦想,没有依托;我们也不能没有朋友,没有理解,没有认同,总是一个人走过漫漫的人生苦旅。不管我们相隔多远,我们都能感到彼此的每一次心跳,我们用心和微笑把彼此的距离拉到最近


      来自Windows8客户端3楼2014-06-20 11:32
      回复
        这是选择排序吧


        IP属地:福建来自WindowsPhone客户端4楼2014-06-20 11:34
        收起回复
          效率低,因为前面的已经排好了,你又遍历了一遍而已


          5楼2014-06-20 13:02
          收起回复
            多排序了一遍,前面x个已经排序好了,你又从第一个开始排序哦了


            IP属地:北京来自Android客户端6楼2014-06-21 11:52
            收起回复
              说前面已经排序排好的都不对。。。因为这个算法是不停的把1换到各个位置
              拿3142来说,四轮循环的结果分别是1342,3142,4132,4321


              7楼2014-06-21 11:59
              回复
                明显第二行写错后排不了 你运行过你的代码吗


                IP属地:湖北9楼2014-06-21 16:21
                收起回复

                  @zfei19831104 3142只是我举得例子,没运行过 四轮循环的结果是 1342,3142,4132,4321 是在纸上算出来的 但是图上这个运行无误


                  10楼2014-06-22 18:49
                  回复

                    分分钟冒泡排序


                    11楼2014-06-22 19:06
                    回复
                      说没错的 自己算算 代码错了


                      来自Android客户端12楼2014-06-24 00:11
                      回复