Projede Selection sort ve instertion sort sıralama algoritmalarını farklı sayılardaki listelerde performansını test ederek ve liste içinde bazı kod kullanımlarını aşağıda göstereceğim.Burada standart haricinde liste list1.Distinct().Count(); kodu ile liste içindeki sayıları tekrar edenleri teke düşürüp sayıyor ör : 100 tane sayı olan listede yalnızca 4 tane 22 olduğunu varsayarsak benzersiz 97 kayıt getirecektir.çünki 1tane sayıyı saydırıyoruz diğer 3 tekrarı listeye katmıyoruz.Ek olarak Array.Copy(dizi1, dizi11,100); ile parametre olarak 2 dizi ve dizi boyutunu veriyoruz ve o iki diziyi kopyalıyor.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Ayrik_mat_mesutPek
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int bayrak1 = 0, bayrak2 = 0, bayrak3 = 0;
int bayrak11 = 0, bayrak22 = 0, bayrak33 = 0;
private void button1_Click(object sender, EventArgs e)
{
Uret();
bayrak1 = 0; bayrak2 = 0; bayrak3 = 0;
bayrak11 = 0; bayrak22 = 0; bayrak33 = 0;
}
int b,a;
List list3 = new List(); // 3tane liste oluşturuyorum. Bu listeleri sayıları ekliyorum.
List list2 = new List();
List list1 = new List();
int[] dizi1=new int[100]; // sıralama için her iki algoritmada dizi tanımlıyorum.
int[] dizi2 = new int[1000];
int[] dizi3 = new int[5000];
int[] dizi11 = new int[100];
int[] dizi22 = new int[1000];
int[] dizi33 = new int[5000];
private void Uret()
{
// bu yazdığım fonksiyon her çalıştığında liste temizleniyor ve yeni sayı üretiliyor.
list1.Clear();
list2.Clear();
list3.Clear();
Benzersayibul(100, 1000);//burada parametreli sayı üretiyorum.
Benzersayibul(1000, 10000);
Benzersayibul(5000, 50000);
listBox1.Items.Add(“Sayılar Üretildi.”);
listBox1.Items.Add(“1 dizi için 100 adet sayı üretildi.0-1000 aralığında.”);
listBox1.Items.Add(“2 dizi için 1000 adet sayı üretildi.0-10000 aralığında.”);
listBox1.Items.Add(“3 dizi için 5000 adet sayı üretildi.0-50000 aralığında.”);
}
private void button2_Click(object sender, EventArgs e)
{
Benzersayi();
}
private void Benzersayi()
{ // burada her küme içerisinde birden fazla olan sayıların adedi bulunuyor.
int sss = list3.Distinct().Count();
sss = 5000 – sss;
int s = list1.Distinct().Count();
s = 100 – s;
int ss = list2.Distinct().Count();
ss = 1000 – ss;
textBox1.Text = s.ToString();
textBox2.Text = ss.ToString();
textBox3.Text = sss.ToString();
}
private void Benzersayibul(int par,int par2)
{
//burada aldığı parametreye göre sayılar üretiliyor.
Random rnd = new Random();
for (int i = 0; i < par; i++)
{
//list2.Add(rnd.Next(0, par2));
if (par==100)
{
list1.Add(rnd.Next(0, par2));
}
else if (par == 1000)
{
list2.Add(rnd.Next(0, par2));
}
else if (par==5000)
{
list3.Add(rnd.Next(0, par2));
}
}
}
private void button3_Click(object sender, EventArgs e)
{
diziyeaktar();
arayaekle();
sirala();
}
private void sirala()
{
int gecici;
for (int i = 0; i < dizi11.Length ; i++)
{
for (int j = i; j < dizi11.Length; j++)
{
// >(büyük) işareti <(küçük ) olarak değiştirilirse büyükten küçüğe sıralanır
if (dizi11[i] > dizi11[j])
{
gecici = dizi11[j];
dizi11[j] = dizi11[i];
dizi11[i] = gecici;
bayrak11 = bayrak11 + 1;
}
}
}
for (int i = 0; i < dizi22.Length; i++)
{
for (int j = i; j < dizi22.Length; j++)
{
// >(büyük) işareti <(küçük ) olarak değiştirilirse büyükten küçüğe sıralanır
if (dizi22[i] > dizi22[j])
{
gecici = dizi22[j];
dizi22[j] = dizi22[i];
dizi22[i] = gecici;
bayrak22 = bayrak22 + 1;
}
}
}
for (int i = 0; i < dizi33.Length; i++)
{
for (int j = i; j < dizi33.Length; j++)
{
// >(büyük) işareti <(küçük ) olarak değiştirilirse büyükten küçüğe sıralanır
if (dizi33[i] > dizi33[j])
{
gecici = dizi33[j];
dizi33[j] = dizi33[i];
dizi33[i] = gecici;
bayrak33= bayrak33 + 1;
}
}
}
textBox9.Text = bayrak11.ToString();
textBox8.Text = bayrak22.ToString();
textBox7.Text = bayrak33.ToString();
listBox1.Items.Add(“Sıralama Algoritması Çalıştı.”);
}
private void arayaekle()
{
for (int j = 1; j < dizi1.Length; j++)
{
int key = dizi1[j];
int i = j – 1;
while (i >= 0 && dizi1[i] > key)
{
dizi1[i + 1] = dizi1[i];
i = i – 1;
bayrak1 = bayrak1 + 1;
}
dizi1[i + 1] = key;
}
for (int j = 1; j < dizi2.Length; j++)
{
int key = dizi2[j];
int i = j – 1;
while (i >= 0 && dizi2[i] > key)
{
dizi2[i + 1] = dizi2[i];
i = i – 1;
bayrak2 = bayrak2 + 1;
}
dizi2[i + 1] = key;
}
for (int j = 1; j < dizi3.Length; j++)
{
int key = dizi3[j];
int i = j – 1;
while (i >= 0 && dizi3[i] > key)
{
dizi3[i + 1] = dizi3[i];
i = i – 1;
bayrak3 = bayrak3 + 1;
}
dizi3[i + 1] = key;
}
textBox6.Text = bayrak1.ToString();
textBox5.Text = bayrak2.ToString();
textBox4.Text = bayrak3.ToString();
listBox1.Items.Add(“Araya ekleyerek sıralama algoritması çalıştı.”);
}
private void diziyeaktar()
{
// listeye ürettiğim sayıları diziye aktarıyorum.
int i = 0;
foreach (var item in list1)
{
if (item>0)
{
dizi1[i] = Convert.ToInt32(item);
++i;
}
}
i = 0;
foreach (var item in list2)
{
if (item > 0)
{
dizi2[i] = Convert.ToInt32(item);
++i;
}
}
i = 0;
foreach (var item in list3)
{
if (item > 0)
{
dizi3[i] = Convert.ToInt32(item);
++i;
}
}
Array.Copy(dizi1, dizi11,100); // dizileri kopyalama
Array.Copy(dizi2, dizi22, 1000);
Array.Copy(dizi3, dizi33, 5000);
}
}
}