loknatesabz
یک شنبه 27 آذر 1390, 08:16 صبح
سلام دوستان
من برنامه ی الگوریتم Quick Sort (مرتب سازی سریع) رو به زبان C# نوشتم اما در حین اجرا و بعداز اینکه آرایه توسط کاربر پرشد موقعی که اولین بار میخواد وارد تابع Partitionبشه پیغام پر بودن Stack (پشته) رو میده.برنامه ای که نوشتم رو پایین میذارم .لطفا هرکسی که میدونه منو راهنمایی کنه. ممنونم
static int n;
static int[] Sam = new int[n];
static void Main(string[] args)
{
Console.WriteLine("Please enter a number for array cells.");
n = Convert.ToInt32(Console.ReadLine());
Sam = new int [n];
for (int i = 0; i < n; i++)
{
Console.WriteLine(i +"omin cell is:");
Sam[i] = Convert.ToInt32(Console.ReadLine());
}
int low = 0;
int high = n;
int pivotpoint=0 ;
//for (pivotpoint = 0; pivotpoint < n; pivotpoint++)
Quick_Sort(low,high,pivotpoint);
Console.WriteLine(Sam);
Console.ReadLine();
}
static void Quick_Sort(int low, int high,int pivotpoint)
{
if (low < high)
{
Partition(low, high, pivotpoint);
Quick_Sort(low, pivotpoint - 1,pivotpoint);
Quick_Sort(pivotpoint + 1, high,pivotpoint);
}
}
static void Partition(int low, int high, int pivotpoint)
{
int j = 0;
int i = 0;
int tempSam = 0;
int pivotitem = Sam[low];
for (i = 1; i < high; i++)
if (Sam[i] > pivotitem)
{
j++;
tempSam = Sam[i];
Sam[i] = Sam[j];
Sam[j] = tempSam;
}
pivotpoint = j;
tempSam = Sam[low];
Sam[low] = Sam[pivotpoint];
Sam[pivotpoint] = tempSam;
}
من برنامه ی الگوریتم Quick Sort (مرتب سازی سریع) رو به زبان C# نوشتم اما در حین اجرا و بعداز اینکه آرایه توسط کاربر پرشد موقعی که اولین بار میخواد وارد تابع Partitionبشه پیغام پر بودن Stack (پشته) رو میده.برنامه ای که نوشتم رو پایین میذارم .لطفا هرکسی که میدونه منو راهنمایی کنه. ممنونم
static int n;
static int[] Sam = new int[n];
static void Main(string[] args)
{
Console.WriteLine("Please enter a number for array cells.");
n = Convert.ToInt32(Console.ReadLine());
Sam = new int [n];
for (int i = 0; i < n; i++)
{
Console.WriteLine(i +"omin cell is:");
Sam[i] = Convert.ToInt32(Console.ReadLine());
}
int low = 0;
int high = n;
int pivotpoint=0 ;
//for (pivotpoint = 0; pivotpoint < n; pivotpoint++)
Quick_Sort(low,high,pivotpoint);
Console.WriteLine(Sam);
Console.ReadLine();
}
static void Quick_Sort(int low, int high,int pivotpoint)
{
if (low < high)
{
Partition(low, high, pivotpoint);
Quick_Sort(low, pivotpoint - 1,pivotpoint);
Quick_Sort(pivotpoint + 1, high,pivotpoint);
}
}
static void Partition(int low, int high, int pivotpoint)
{
int j = 0;
int i = 0;
int tempSam = 0;
int pivotitem = Sam[low];
for (i = 1; i < high; i++)
if (Sam[i] > pivotitem)
{
j++;
tempSam = Sam[i];
Sam[i] = Sam[j];
Sam[j] = tempSam;
}
pivotpoint = j;
tempSam = Sam[low];
Sam[low] = Sam[pivotpoint];
Sam[pivotpoint] = tempSam;
}