请问数组能这么用么, 我晕晕呼呼
merge 是以有的一个函数, 可将两个已经sortiete arrays 合并到一起, 返回的也是一个array,然后让编这个mergesort(int [] a),只许iterativ。public static void mergesort(int[] a){
int [] x1={a};
int [] x2={a};
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那里比较别扭, 长度上,但又不知怎么该:( 呵呵,不好意思,本想让你的源程序正常显示,所以编辑了一下你的主贴,可惜没成功:(
我没弄明白你为何那样声明x1,x2两个数组,对于整个程序来说,似乎没什么意义(我猜想你只是为了在声明c的时候可以使用一下merge这个方法)。至于在while循环里的这两句:
int [] temp =merge(c,b);
c=temp;
我觉得你可以用 c = merge(c,b);代替。整个程序改成这样怎么样?
public static void mergesort(int [] a)
{
int c[] = new int;
int i = 0;
while( i < a.length)
{
int x = { a(i)};
c = merge(c,x);
i++;
}
}
array的长度一旦确定,是无法更改的,用arrylist或者arry.add(i)方法要更方便一些。 :D 谢谢, 给你鞠躬了。;) 再提一个问题成不? 什么叫shellsort?
谢谢你的建议用arraylist or array.add(i), 可惜我不懂:( 不用客气:)
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到底是个什么东西我说不清楚,只知道它的长度是可以更改的,可以随意(同时)地放任何类型的数据进去。不过它跟你这个题目没什么关系,我也只是随口提了一句,呵呵。 Shellsort
Shellsort ist eines der am längsten bekannten Sortierverfahren (benannt nach seinem Urheber D.L. Shell ). Es ist sehr schnell, einfach zu verstehen und einfach zu implementieren, allerdings ist seine Analyse etwas aufwendiger.
http://www.iti.fh-flensburg.de/lang/algorithmen/sortieren/shell/shell.htm hmmm, 不错不错,谢谢:) 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){r=m-1;}
else {l=m+1;}
}
for (int j =i-1; j>=1; j--) {
a = a;
}
a=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;) 你第一个for循环是什么?是不是写错? xixi...sorry:D 是打错了, 更正:
for (int i=1; i<a.length; i++){
x=a;
l=0;
...........:o for ( int i=1; i<a.length; i++){
x= a;
l= 0;
.......
页:
[1]
2