Sunday, September 28, 2008

Sort data with Queue(c#)

The Queue is FIFO(first in, first out), this is different from ArrayList. now let's check out how to sort data with queue.
ok, let's go!


using System.Collections;//
namespace SortDataWithQueues
{
class Program
{
enum Digittype {ones = 1,tens = 10 };
static void DisplayArray(int[] n)
{
for (int i = 0; i <= n.GetUpperBound(0); i++)
{
Console.Write(n[i]+" ");
}
}
static void RSort(Queue[] que, int[] n, Digittype digit)
{
int snum;
for (int i = 0; i <= n.GetUpperBound(0); i++)
{
if (digit == Digittype.ones)
{
snum = n[i] % 10;
}
else
{
snum = n[i] / 10;
}
que[snum].Enqueue(n[i]);
}
}
static void BuildArray(Queue[] que,int[] n)
{
int y = 0;
for (int i = 0; i <= 9; i++)
{
while (que[i].Count > 0)
{
n[y] = Int32.Parse(que[i].Dequeue().ToString());
y++;
}
}
}
static void Main(string[] args)
{
Queue[] numQueue = new Queue[10];
int[] nums = new int[] {91,46,85,15,92,35,31,22 };
int[] random = new Int32[99];
//display original list
for (int i = 0; i < 10; i++)
{
numQueue[i] = new Queue();
}
RSort(numQueue,nums,Digittype.ones);
BuildArray(numQueue,nums);
Console.WriteLine();
Console.WriteLine("first pass results: ");
DisplayArray(nums);
//second pass sort
RSort(numQueue,nums,Digittype.tens);
BuildArray(numQueue,nums);
Console.WriteLine();
Console.WriteLine("second pass results: ");
//display final results
DisplayArray(nums);
Console.WriteLine();
}
}
}

Generate the prime numbers using bitArray(c#)

here's a method to generate prime numbers.
ok, let's go!!


namespace bitArray
{
class CArray
{
private int[] arr;
private int upper;
private int numElements;
public CArray(int size)
{
arr = new int[size];
upper = size - 1;
numElements = 0;
}
public void Insert(int item)
{
arr[numElements] = item;
numElements++;
}
public void DisplayElements()
{
for (int i = 0; i <= upper; i++)
{
Console.Write(arr[i]+" ");
}
}
public void Clear()
{
for (int i = 0; i <= upper; i++)
{
arr[i] = 0;
numElements = 0;
}
}
//generate the prime number
public void GenPrime()
{
int temp;
for (int i = 2; i <= arr.GetUpperBound(0); i++)
{
for (int j = i + 1; j <= arr.GetUpperBound(0); j++)
{
if (arr[j] == 1)
{
if ((j % i) == 0)
{
arr[j] = 0;
}
}
}
}
}
//dsiplay the prime number
public void ShowPrime()
{
for (int i = 2; i <= arr.GetUpperBound(0); i++)
{
if (arr[i] == 1)
{
Console.Write(i+" ");
}
}
}
}
class Program
{
static void Main(string[] args)
{
int size = 100;
CArray primes = new CArray(size);
for (int i = 0; i <= size - 1; i++)
{
primes.Insert(1);
}
primes.GenPrime();
primes.ShowPrime();
}
}
}