Hallo,
ich habe folgendes Problem:
Ich soll einen Quicksort Algorithmus in Perl schreiben. Hat bis jetzt auch relativ einfach funktioniert. Allerdings stehe ich jetzt vor dem Problem, das sich das Programm immer wieder aufhÀngt, bzw die Zahlen nicht richtig Sortiert.
Die Zahlen sollen aus einer Eingabe.txt eingelesen und in der Ausgabe.txt sortiert gespeichert werden!
In der Eingabe.txt stehen:
Der Perl-Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
use strict;
#use warnings;
my @a;
my $z=0;
my $i=0;
my $l;
my $j;
my $m;
open IN, "eingabe.txt";
open OUT, ">ausgabe.txt";
while(<IN>)
{
@a[$z] = $_;
$z++;
}
$z=$z-1;
$m =int($z / 2);
quick(\@a,0,$z);
sub quick
{
my @a=$_[0];
my $l=$_[1];
my $r=$_[2];
my $t;
my $v=0;
if ($l<$r)
{
$v=@a[$r];
do
{
for($i=$l; @a[$i]<$v; $i++){}
for($j=$r-1; @a[$j]>$v; $j--){}
# $i=$l;
# while(@a[$i]<$v)
# {
# $i=$i+1;
# }
# $j=$r-1;
# while(@a[$j]>$v)
# {
# $j=$j-1;
# }
if ($i<$j)
{
$t=@a[$i];
@a[$i]=@a[$j];
@a[$i]=$t;
}
}while($i<$j);
$t=@a[$i];
@a[$i]=@a[$r];
@a[$r]=$t;
quick(\@a,$l,$i-1);
quick(\@a,$i+1,$r);
}
print @a;
}
close IN;
close OUT;
Last edited: 2013-12-12 08:59:48 +0100 (CET)