Thread Quicksort in Perl (9 answers)
Opened by perlnoob96 at 2013-12-12 07:22

Gast perlnoob96
 2013-12-12 07:22
#172566 #172566
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:
Code: (dl )
1
2
3
4
5
6
6
3
1
4
2
5


Der Perl-Code:
Code: (dl )
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)

View full thread Quicksort in Perl