萍聚社区-德国热线-德国实用信息网

 找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

12
返回列表 发新帖
楼主: two steps

请问数组能这么用么, 我晕晕呼呼

[复制链接]
发表于 2003-6-1 13:12 | 显示全部楼层
was bedeutet das ???  i x=a;
Hast du wieder vertippt?
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 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;.......
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-6-1 13:36 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 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[m]){r=m-1;}
           else {l=m+1;}
       }
      for (int j =i-1; j>=1; j--) {
         a[j+1] = a[j];
      }
      a[l]=x;
}}
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2003-6-1 15:50 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2003-6-1 15:51 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-6-1 16:44 | 显示全部楼层
最后那个for循环就是把所有的元素顺序移一次位,比如a[5]=a[4],a[4]=[3]...
依次类推最后缺一个的数组也就是上面while循环里面比较出来最大的数组再补上。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2003-6-1 17:10 | 显示全部楼层
可它这么一移, 空缺的总是第一个位置呀?:confused: , 而while 里选出的那个位置 不一定是第一个呀
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-7-16 08:33 | 显示全部楼层
我想你最后一个for循环是抄错了,应该是

for (int j =i-l; j>=l; j--) {
a[j+1] = a[j];
}

前面的while循环,是二分法比较,最后我们得到的是x在它的前位数组里的有效位置,这个位置最后是用l来表示的。那么之后的for循环做的功能就是把从l到i-1位置的元素向后顺移,然后空出l的位置给x。这种排序方法类似于插入排序,只是比较模块用了二分法。其实我感觉并不是很好,komplexzeit比不上快速排序和希尔排序。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

手机版|Archiver|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网

GMT+1, 2025-2-7 15:19 , Processed in 0.068732 second(s), 14 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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