SPUG: Sort an array question
Andrew Reid
blueovalfun at yahoo.com
Thu Dec 26 14:53:17 CST 2002
Greetings,
While attempting to gain more meaninful employment, I
happened upon this question from a prospective
provider of opportunity. "Sort an array
alphabetically without using the Perl sort command."
This was provided by someone not familiar with Perl
but other languages and all work was shown on a white
board. I think I did OK, there were a few holes in
the code, and I decided to really give it a shot.
This works and is very close to what I provided on the
spot.
If any of you have some free time and thoughts, I'd
appreciate them! Tell me what you think.
Here is my program.
#!/usr/bin/perl -w
$arrayCnt = 0;
$passCnt = 0;
$elementCnt = 0;
@array1 = qw(e c g h z r t a i h j l p b d r q x v a);
@array2 = sort(@array1);
foreach (@array1) {$arrayCnt++;}
print "This is the array Count [$arrayCnt]\n";
while (defined @array1) {
$startPnt = $array1[$passCnt];
$lowValue = $startPnt;
if ($arrayCnt <= $passCnt) {
print "My sort list [@array1]\n";
print "A Check Sort [@array2]";
exit;
}
print "The array as found in loop $passCnt
\t[@array1]\n";
print "The Start point value \t** $startPnt **\t \n";
foreach (@array1) {
if ($elementCnt < $passCnt){
print "Element Value [ $_ ]\t";
print "Element Count [$elementCnt]\t Pass
Count [$passCnt]\n";
shift;
} elsif (($_ lt $lowValue) || ($_ eq
$lowValue)){
print "Comparing $_ to $lowValue
[Element #$elementCnt]\t";
$lowValue = $_;
print "Low value [$lowValue]\n";
$lowElement = $elementCnt;
}
$elementCnt++;
} #end of foreach
if ($startPnt ne $lowValue) {
print "This was the low value [$lowValue] and
low element [$lowElement]\n";
push(@array1,$startPnt);
print ("splice()
",splice(@array1,$lowElement,1), "\n");
$array1[$passCnt] = $lowValue;
$passCnt++;
} else {$passCnt++;}
} #end of while
__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
POST TO: spug-list at pm.org PROBLEMS: owner-spug-list at pm.org
Subscriptions; Email to majordomo at pm.org: ACTION LIST EMAIL
Replace ACTION by subscribe or unsubscribe, EMAIL by your Email-address
For daily traffic, use spug-list for LIST ; for weekly, spug-list-digest
Seattle Perl Users Group (SPUG) Home Page: http://seattleperl.org
More information about the spug-list
mailing list