musicbug 发表于 2003-6-1 13:12

was bedeutet das ???i x=a;
Hast du wieder vertippt?

two steps 发表于 2003-6-1 13:15

啊:mad:气气啦, 为甚么呀, 总传成这副德性:confused:
干脆口述吧: 就是for 一下,dann wird int i mit 1 inizializiert und je nach durchlaufen um 1 erhoeht bis es die laenge dieses arrays minus 1 erreicht.
im schleifeninneren :x= a; l=0;.......

musicbug 发表于 2003-6-1 13:36

bitte schreib mal den vollständige Code.

two steps 发表于 2003-6-1 15:48

public static void magic (int [] a){
    int l, r, m, x;
    for ( int i=1; i< a.length;){
       x=a;
       l=0;
       r=i-1;
       while ( l<= r) {
         m= (l+r)/2;
         if (x<=a){r=m-1;}
         else {l=m+1;}
       }
      for (int j =i-1; j>=1; j--) {
         a = a;
      }
      a=x;
}}

two steps 发表于 2003-6-1 15:50

我都没话了, 明明没打那个;) 嘛

two steps 发表于 2003-6-1 15:51

;)   change to    ;i++   )

musicbug 发表于 2003-6-1 16:44

最后那个for循环就是把所有的元素顺序移一次位,比如a=a,a=...
依次类推最后缺一个的数组也就是上面while循环里面比较出来最大的数组再补上。

two steps 发表于 2003-6-1 17:10

可它这么一移, 空缺的总是第一个位置呀?:confused: , 而while 里选出的那个位置 不一定是第一个呀

daxia108 发表于 2003-7-16 08:33

我想你最后一个for循环是抄错了,应该是

for (int j =i-l; j>=l; j--) {
a = a;
}

前面的while循环,是二分法比较,最后我们得到的是x在它的前位数组里的有效位置,这个位置最后是用l来表示的。那么之后的for循环做的功能就是把从l到i-1位置的元素向后顺移,然后空出l的位置给x。这种排序方法类似于插入排序,只是比较模块用了二分法。其实我感觉并不是很好,komplexzeit比不上快速排序和希尔排序。
页: 1 [2]
查看完整版本: 请问数组能这么用么, 我晕晕呼呼