Учусь программировать на .NET.
Сейчас учим в школе сортировку (Bubblesort, Shellsort, Quicksort)
на форме две кнопки и два listbox. Одна кнопка создает массив со случайными числами, вторая выполняет сортировку.
Задача - написать класс в котором будут функции сортировки.
Трудность в следующем. В функции сортировки нужно обращаться к значению массива для сравнения или что бы поменять местами.
На форме где декларирую а потом инициализирую массив проблем нет.
А как задать массив в классе. Ведь такое вроде не возможно. Или как обойти эту проблему.
- Код: Выделить всё
// обьявляю массив
int[]Tabel;
//создаю массив в 500 элементов со случайными числами
private void Form1_Load(object sender, System.EventArgs e)
{
Tabel=new int[500];
Random gen = new Random();
int getal, i;
for(i=0;i< 500; i++)
{
getal=gen.Next(1,501);
Tabel[i]=getal;
}
}
// отображаю числа из массива в листбоксе
private void btnMaak_Click(object sender, System.EventArgs e)
{
for(int i=0;i<500;i++)
{
listBox1.Items.Add(Tabel[i]);
}
}
// нажатик кнопки вызывает заданную функцию сортироки.
private void btnSorteer_Click(object sender, System.EventArgs e)
{
// shellsort();
Quicksort(0, 499); // здесь вызываю ту или иную функцию сортировки.
tonen();
}
private void shellsort()
{
int _As = 500;
bool verwisseld=false;
while(_As>1)
{
_As=_As/2;
do
{
verwisseld=false;
int i=0; int j=_As + i;
while(j<500)
{
if(Tabel[i]>Tabel[j])
{
verwissel(i,j);
verwisseld=true;
}
i++; j=_As + i;
}
}while(verwisseld);
}
}
private void Quicksort(int Li, int Re) // Li левая Re правая граница массива
{
int Hli=Li; int Hre=Re; // H означает вспомогательная
int mid=Tabel[(Hli+Hre)/2];
while(Hli<=Hre)
{
while(Tabel[Hli]<mid)
{
Hli++;
}
while(Tabel[Hre]>mid)
{
Hre--;
}
if(Hli<=Hre)
{
verwissel(Hli,Hre);
Hli++; Hre--;
}
}
if(Li<Hre)
{
Quicksort(Li,Hre);
}
if(Hli<Re)
{
Quicksort(Hli, Re);
}
}
//меняем местами значения в массиве
private void verwissel(int ind1, int ind2)
{
int hulp=Tabel[ind1];
Tabel[ind1]=Tabel[ind2];
Tabel[ind2]=hulp;
}
// отображаю отсортированный массив во втором листбоксе.
private void tonen()
{
for(int i=0;i<500;i++)
{
listBox2.Items.Add(Tabel[i]);
}
}
Подскажите как решить проблему. Хочеться вывести shelsort и quicksort в отдельный класс.
Заранее спасибо за помощь.