<?php
{
session_start();
if(isset($_SESSION['arr']))
{
if($_POST["text"]=='')
{
startsort();
unset($_SESSION['arr']);
$_SESSION['count']=0;
$_SESSION['arr']=array();
}
else
{
array_push($_SESSION['arr'],$_POST["text"]);
$_SESSION['count']=$_SESSION['count']+1;
}
}
else
{
$_SESSION['count']=0;
$_SESSION['arr']=array();
}
}
?>
<?php
function startsort()
{
for($i=0;$i<$_SESSION['count'];$i++)
$myShape1[$i]=new SWFShape();
for($i=0;$i<$_SESSION['count'];$i++)
{
$myShape1[$i]->setLine(5,0,0,255); //WIDTH of the line and its rgb value
$myShape1[$i]->setRightFill(255,0,0);
$myShape1[$i]->movePen(-15,-65);
$myShape1[$i]->drawLine(130,0);
$myShape1[$i]->drawLine(0,130);
$myShape1[$i]->drawLine(-130,0);
$myShape1[$i]->drawLine(0,-130);
}
$myMovie=new SWFMovie();
$myMovie->setDimension(1200,1200);
$myMovie->setBackground(255,0,0);//red
//print the search term and array elements
$myFont1=new SWFFont("bit.fdb");
$myText1=new SWFText();
$myText1->setFont($myFont1);
$myText1->setColor(0,255,255);
$myText1->setHeight(40);
$myText1->addString("The elements in the original array are");
$firstText1=$myMovie->add($myText1);
$firstText1->moveTo(20,350);
$k=20;
foreach ($_SESSION['arr'] as $val)
{
$myText2=new SWFText();
$myText2->setFont($myFont1);
$myText2->setColor(0,255,255);
$myText2->setHeight(40);
$myText2->addString($val);
$firstText2=$myMovie->add($myText2);
$firstText2->moveTo($k,400);
$k=$k+120;
}
$k=130;
$j=0;
foreach ($_SESSION['arr'] as $val) //adding each shape as a moving square with text
{
$movingSquare[$j]=$myMovie->add($myShape1[$j]);
$movingSquare[$j]->moveTo($k,100);
$myFont=new SWFFont("bit.fdb");
$myText=new SWFText();
$myText->setFont($myFont);
$myText->setColor(255,0,255);
$myText->setHeight(40);
$myText->addString($val);
$firstText=$myMovie->add($myText);
$firstText->moveTo($k+0.5,100);
for($i=0; $i<20; $i++){
$myMovie->nextFrame();
$movingSquare[$j]->multColor(1.0-$i/20, 1.0, 1.0); } //moving the frame after adding the square and number
$k=$k+130;
$j++;
}
//sort logic
$k=130;
$incarr=array(5,3,1);
foreach ($incarr as $val)
{
for($i=$val; $i<$_SESSION['count'];$i++)
{
$y=$_SESSION['arr'][$i];
for($j=$i-$val; $j>=0 && $y<$_SESSION['arr'][$j]; $j-=$val)
{
$movingSquare[$j+$val]=$myMovie->add($myShape1[$j+$val]);
$movingSquare[$j+$val]->moveTo(($j+$val+1)*$k,100);
$myFont=new SWFFont("bit.fdb");
$myText=new SWFText();
$myText->setFont($myFont);
$myText->setColor(255,0,255);
$myText->setHeight(40);
$myText->addString($_SESSION['arr'][$j+$val]);
$firstText=$myMovie->add($myText);
$firstText->moveTo(($k*($j+$val+1))+0.5,100);
$movingSquare[$j]=$myMovie->add($myShape1[$j]); //for initial highlighting
$movingSquare[$j]->moveTo(($j+1)*$k,100);
$myFont=new SWFFont("bit.fdb");
$myText=new SWFText();
$myText->setFont($myFont);
$myText->setColor(255,0,255);
$myText->setHeight(40);
$myText->addString($_SESSION['arr'][$j]);
$firstText=$myMovie->add($myText);
$firstText->moveTo(($k*($j+1))+0.5,100); //because of array positioning in flash array index is 0 but posn starts with 90*1
for($t1=0; $t1<10; $t1++){
$myMovie->nextFrame();
$movingSquare[$j+$val]->multColor(1.0, 1.0, 1.0-$t1/10);
$movingSquare[$j]->multColor(1.0, 1.0, 1.0-$t1/10); }
for($t2=0; $t2<10; $t2++){
$myMovie->nextFrame();
$movingSquare[$j+$val]->multColor(1.0-$t2/20, 1.0, 1.0);
$movingSquare[$j]->multColor(1.0-$t2/20, 1.0, 1.0); } //changing the color
$_SESSION['arr'][$j+$val]=$_SESSION['arr'][$j];
$movingSquare[$j+$val]=$myMovie->add($myShape1[$j+$val]);
$movingSquare[$j+$val]->moveTo(($j+$val+1)*$k,100);
$myFont=new SWFFont("bit.fdb");
$myText=new SWFText();
$myText->setFont($myFont);
$myText->setColor(255,0,255);
$myText->setHeight(40);
$myText->addString($_SESSION['arr'][$j+$val]);
$firstText=$myMovie->add($myText);
$firstText->moveTo(($k*($j+$val+1))+0.5,100);
$movingSquare[$j]=$myMovie->add($myShape1[$j]); //for initial highlighting
$movingSquare[$j]->moveTo(($j+1)*$k,100);
$myFont=new SWFFont("bit.fdb");
$myText=new SWFText();
$myText->setFont($myFont);
$myText->setColor(255,0,255);
$myText->setHeight(40);
$myText->addString($_SESSION['arr'][$j]);
$firstText=$myMovie->add($myText);
$firstText->moveTo(($k*($j+1))+0.5,100); //because of array positioning in flash array index is 0 but posn starts with 90*1
for($t1=0; $t1<10; $t1++){
$myMovie->nextFrame();
$movingSquare[$j+$val]->multColor(1.0, 1.0, 1.0-$t1/10);
$movingSquare[$j]->multColor(1.0, 1.0, 1.0-$t1/10); }
for($t2=0; $t2<10; $t2++){
$myMovie->nextFrame();
$movingSquare[$j+$val]->multColor(1.0-$t2/20, 1.0, 1.0);
$movingSquare[$j]->multColor(1.0-$t2/20, 1.0, 1.0); } //changing the color
}
$movingSquare[$i]=$myMovie->add($myShape1[$i]);
$movingSquare[$i]->moveTo(($i+1)*$k,100);
$myFont=new SWFFont("bit.fdb");
$myText=new SWFText();
$myText->setFont($myFont);
$myText->setColor(255,0,255);
$myText->setHeight(40);
$myText->addString($_SESSION['arr'][$i]);
$firstText=$myMovie->add($myText);
$firstText->moveTo(($k*($i+1))+0.5,100);
$movingSquare[$j+$val]=$myMovie->add($myShape1[$j+$val]); //for initial highlighting
$movingSquare[$j+$val]->moveTo(($j+$val+1)*$k,100);
$myFont=new SWFFont("bit.fdb");
$myText=new SWFText();
$myText->setFont($myFont);
$myText->setColor(255,0,255);
$myText->setHeight(40);
$myText->addString($_SESSION['arr'][$j+$val]);
$firstText=$myMovie->add($myText);
$firstText->moveTo(($k*($j+$val+1))+0.5,100); //because of array positioning in flash array index is 0 but posn starts with 90*1
for($t1=0; $t1<10; $t1++){
$myMovie->nextFrame();
$movingSquare[$i]->multColor(1.0, 1.0, 1.0-$t1/10);
$movingSquare[$j+$val]->multColor(1.0, 1.0, 1.0-$t1/10); }
for($t2=0; $t2<10; $t2++){
$myMovie->nextFrame();
$movingSquare[$i]->multColor(1.0-$t2/20, 1.0, 1.0);
$movingSquare[$j+$val]->multColor(1.0-$t2/20, 1.0, 1.0); } //changing the color
$_SESSION['arr'][$j+$val]=$y;
$movingSquare[$i]=$myMovie->add($myShape1[$i]);
$movingSquare[$i]->moveTo(($i+1)*$k,100);
$myFont=new SWFFont("bit.fdb");
$myText=new SWFText();
$myText->setFont($myFont);
$myText->setColor(255,0,255);
$myText->setHeight(40);
$myText->addString($_SESSION['arr'][$i]);
$firstText=$myMovie->add($myText);
$firstText->moveTo(($k*($i+1))+0.5,100);
$movingSquare[$j+$val]=$myMovie->add($myShape1[$j+$val]); //for initial highlighting
$movingSquare[$j+$val]->moveTo(($j+$val+1)*$k,100);
$myFont=new SWFFont("bit.fdb");
$myText=new SWFText();
$myText->setFont($myFont);
$myText->setColor(255,0,255);
$myText->setHeight(40);
$myText->addString($_SESSION['arr'][$j+$val]);
$firstText=$myMovie->add($myText);
$firstText->moveTo(($k*($j+$val+1))+0.5,100); //because of array positioning in flash array index is 0 but posn starts with 90*1
for($t1=0; $t1<10; $t1++){
$myMovie->nextFrame();
$movingSquare[$i]->multColor(1.0, 1.0, 1.0-$t1/10);
$movingSquare[$j+$val]->multColor(1.0, 1.0, 1.0-$t1/10);
}
for($t2=0; $t2<10; $t2++){
$myMovie->nextFrame();
$movingSquare[$i]->multColor(1.0-$t2/20, 1.0, 1.0);
$movingSquare[$j+$val]->multColor(1.0-$t2/20, 1.0, 1.0); } //changing the color
}
}
$myMovie->save("shell.swf");
}
?>
<html>
<head>
<script type='text/javascript' src='recoverscroll.js'></script>
<title>Learn Data Structures the Flash Way</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="stylesheet.css" type="text/css" />
<style type="text/css">
<!--
.style3 { font-size: 12pt;
font-weight: bold;
color: #3300FF;
}
.style4 {font-size: 12pt; font-weight: bold; color: #663333; }
-->
</style>
</head>
<body onLoad="document.f.text.focus()">
<script type='text/javascript'>
RecoverScroll.addToHandler(window,'onload',function(){RecoverScroll.init()});
</script>
<div id="container">
<div id="header">
<h2>Let's learn, here's my card.</h2>
<h1><a href="#">Data Structures Tutor </a></h1>
</div>
<div id="navigation">
<ul>
<li><a href="index.php">Home</a></li>
<li><a href=#>Animated Algorithms</a>
<ul>
<li><a href="linear.php">Linear search</a></li><br />
<li><a href="binary.php">Binary search</a></li><br />
<li><a href="bubble.php">Bubble sort</a></li><br />
<li><a href="selection.php">Selection sort</a></li><br />
<li><a href="insertion.php">Insertion sort</a></li><br />
<li><a href="shell.php">Shell sort</a></li><br />
</ul>
</li>
</ul>
</div>
<div id="content" >
<EMBED src="shell.swf" WIDTH=554 HEIGHT=500 loop="false" TYPE="application/x-shockwave-flash" PLUGINSPAGE= "http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" bgcolor="#663333">
<br>
<form name="f" action = "<? echo $_SERVER['PHP_SELF']?>" method="post">
Enter one more number(Press Sort without entering any value to start the animation): <input type="text" name="text" value="<?=$text?>" size="30"><br>
The increments considered are 5,3,1<br>
<input type="submit" name="Sort" ><br>
*-Press submit after entering every value of the array
</form>
<br>
<form action="down.php" name="fff" method="post">
<input type="hidden" name="file" value="shell.swf">
<input type="submit" name = "click to download the flash" value="Download the generated flash!">
</form>
</div>
</div>
<p class="style4">Algorithm for Shell Sort</p>
<p class="style3"><br>
for(incr=0;incr less_than numinc;incr++)<br>
{<br>
/* span is the size of the increment */<br>
span = incrmnts[incr];<br>
for(j = span; j less_than n;j++)<br>
{<br>
/* insert element x[j] into its proper */ <br>
/* position within its subfile */ <br>
y = x[j]; <br>
for(k=j-span; k>=0 && y less_than x[k]; k-=span)<br>
{<br>
x[k+span]=y;<br>
}<br>
x[k+span]=y;<br>
}<br>
}</p>
<p class="style3"> </p>
<p class="style3"></p>
</body>
</html>