C# ta Selection sort ve insertion sort Algoritmaları Analizi

0
3749

C# ta Selection sort ve  insertion sort  Algoritmaları Analizi

Merhaba Arkadaşlar,

C# ta Selection sort ve insertion sort Algoritmaları Analizi
C# ta Selection sort ve insertion sort Algoritmaları Analizi

Ayrık matematik dersi için yazdığım projeyi faydalı olabileceğini tahmin ederek paylaşmak istedim.

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. Projenin tamamını linkten indirebilirsiniz.(Açıklamalar projede yer almamaktadır.)

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<int> list3 = new List<int>(); // 3tane liste oluşturuyorum. Bu listeleri sayıları ekliyorum.
List<int> list2 = new List<int>();
List<int> list1 = new List<int>();
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);
}
}
}

 

CEVAP VER

Time limit is exhausted. Please reload CAPTCHA.