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

 找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 1302|回复: 18

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

[复制链接]
发表于 2003-5-31 21:09 | 显示全部楼层

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

merge 是以有的一个函数, 可将两个已经sortiete arrays 合并到一起, 返回的也是一个array,然后让编这个mergesort(int [] a),只许iterativ。

public static void mergesort(int[] a){
        int [] x1={a[0]};
        int [] x2={a[1]};
        int [] c = merge(x1, x2);
        int i=2;
        while (i<a.length){
            int [] b={a};
            int [] temp =merge(c,b);
            c=temp;
            i++;
        }
    }

我总觉得 c= temp那里比较别扭, 长度上,但又不知怎么该:(
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-5-31 21:54 | 显示全部楼层
呵呵,不好意思,本想让你的源程序正常显示,所以编辑了一下你的主贴,可惜没成功:(

我没弄明白你为何那样声明x1,x2两个数组,对于整个程序来说,似乎没什么意义(我猜想你只是为了在声明c的时候可以使用一下merge这个方法)。至于在while循环里的这两句:
            int [] temp =merge(c,b);
            c=temp;
我觉得你可以用 c = merge(c,b);代替。整个程序改成这样怎么样?

  1. public static void mergesort(int [] a)
  2. {
  3.        int c[] = new int[a.length];
  4.        int i = 0;
  5.       while( i < a.length)
  6.       {
  7.          int x = { a(i)};
  8.          c = merge(c,x);
  9.          i++;
  10.        }
  11. }
复制代码

[/SIZE]
array的长度一旦确定,是无法更改的,用arrylist或者arry.add(i)方法要更方便一些。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2003-5-31 22:09 | 显示全部楼层
:D 谢谢, 给你鞠躬了。;)   再提一个问题成不? 什么叫shellsort?
谢谢你的建议用arraylist or array.add(i), 可惜我不懂:(
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-5-31 23:59 | 显示全部楼层
不用客气:)

shellsort我不清楚:(。

事实上我刚才写的那几个句子,只是把a数组中的数据一个一个放进c数组里,跟sort是没什么关系的。用array.add()方法也可以实现:把while里的前两句替换成c.add(a);就行了,不需要x数组。

Array有自带一个sort方法:Arrays.sort(arrays)
具体用法你可以在Java API里查到:java.util.Arrays
[http://java.sun.com/j2se/1.4.2/docs/api/java/util/Arrays.html

ArrayList到底是个什么东西我说不清楚,只知道它的长度是可以更改的,可以随意(同时)地放任何类型的数据进去。不过它跟你这个题目没什么关系,我也只是随口提了一句,呵呵。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-6-1 00:14 | 显示全部楼层
Shellsort
   

Shellsort ist eines der am l&auml;ngsten bekannten Sortierverfahren (benannt nach seinem Urheber D.L. Shell [Sh]). Es ist sehr schnell, einfach zu verstehen und einfach zu implementieren, allerdings ist seine Analyse etwas aufwendiger.

http://www.iti.fh-flensburg.de/l ... ren/shell/shell.htm
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-6-1 00:19 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2003-6-1 11:52 | 显示全部楼层
wonderbar:D :D 现在正在讲各种sortiereverfahren....昨天贴的那是作业中的一道, 我不会:( 。
还有一个变态 sort 如下:
public static void magic (int [] a){
    int l, r, m, x;
    for ( int i=1; i<a.length; i++){
        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;   
     }
然后说:Wenden Sie den obigen Algorithmus "per Hand" auf das folgende Feld an : " 23, 17,46, 67, 19, 2, 11, 8 ".....(blablabla)
我老老实实的按着程序去折腾折腾这串数。。。对最后那个for-schleife 大惑不解:confused:  能再帮帮我么? thanks for advance;)
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2003-6-1 12:20 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2003-6-1 13:02 | 显示全部楼层
xixi...sorry:D 是打错了, 更正:
for (int i=1; i<a.length; i++){
      x=a;
      l=0;
...........:o
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2003-6-1 13:04 | 显示全部楼层
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 11:52 , Processed in 0.065146 second(s), 15 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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