January 01, 2018
static int islem_say = 1; static Random temp = new Random(); string lischPerformans, rischPerformans, eischPerformans, beischPerformans; private ListView sirasiz = new ListView(); private ListView lstLISCH = new ListView(); private ListView lstRISCH = new ListView(); private ListView lstEISCH = new ListView(); private ListView lstBEISCH = new ListView();private ListView lstEICH = new ListView(); public Eleman[] elemanUretilen; public int[] listeBas = new int[10]; int total_area; public int randomElemanSayisi; public int packingFactor; public int modValue; public int secondaryListCount; public int min_value; public int max_value; public ComboBox process_Choose; Stopwatch st_lish = new Stopwatch(); Stopwatch st_rlish = new Stopwatch(); Stopwatch st_eish = new Stopwatch(); Stopwatch st_beish = new Stopwatch(); #region Methodlar public int[] find_random_indis(Eleman[] elemanDolas_gelen) { int bos_say = 0; int[] boslar = new int[elemanDolas_gelen.Length]; for (int i = 0; i < elemanDolas_gelen.Length; i++) { if (elemanDolas_gelen[i].Deger == -1) { boslar[i] = i; bos_say++; } else//dolu ise orayı -2 yap { boslar[i] = -2; } } return boslar; } private Eleman[] item_producer(Eleman[] uretilecek, int elemanSayisi) { uretilecek = new Eleman[elemanSayisi]; for (int i = 0; i < randomElemanSayisi; i++) { Eleman elemanEklenecek = new Eleman(); try { elemanEklenecek.Deger = temp.Next(min_value, max_value); } catch (Exception) { MessageBox.Show("Max degerini min degerinden küçük girdiniz lütfen değerleri geçerli giriniz."); this.Close(); } elemanEklenecek.LinkAddress = "x"; elemanEklenecek.HomeAddress = elemanEklenecek.Deger % modValue; uretilecek[i] = elemanEklenecek; } return uretilecek; } private ListView addItems_To_ListView(ListView gelenParametre, int elemanSayisi, Eleman[] eklenecekElemanListesi) { for (int i = 0; i < elemanSayisi; i++) { string[] subElemanlar = new string[] { i.ToString(), eklenecekElemanListesi[i].Deger.ToString(), eklenecekElemanListesi[i].LinkAddress.ToString(),eklenecekElemanListesi[i].PropKaydedilen.ToString() }; ListViewItem sirasizElemanlar = new ListViewItem(subElemanlar); gelenParametre.Items.Add(sirasizElemanlar); } return gelenParametre; } private ListView addItems_To_ListView_EICH(ListView gelenParametre, int elemanSayisi, Eleman[] eklenecekElemanListesi,int primary,int overflow) { string[] subElemanlar; for (int i = 0; i < elemanSayisi; i++) { if (i<primary) { subElemanlar = new string[] { i.ToString(), eklenecekElemanListesi[i].Deger.ToString(), eklenecekElemanListesi[i].LinkAddress.ToString(), eklenecekElemanListesi[i].PropKaydedilen.ToString() }; } else if (i==primary) { subElemanlar = new string[] { "over", "flow", "start", "overflowstart"}; } else { subElemanlar = new string[] { i.ToString(), eklenecekElemanListesi[i].Deger.ToString(), "x", eklenecekElemanListesi[i].PropKaydedilen.ToString() }; } ListViewItem sirasizElemanlar = new ListViewItem(subElemanlar); gelenParametre.Items.Add(sirasizElemanlar); } return gelenParametre; } private ListView addItems_To_ListView_HomeAdres(ListView gelenParametre, int elemanSayisi, Eleman[] eklenecekElemanListesi) { for (int i = 0; i < elemanSayisi; i++) { string[] subElemanlar = new string[] { i.ToString(), eklenecekElemanListesi[i].Deger.ToString(), eklenecekElemanListesi[i].HomeAddress.ToString() }; ListViewItem sirasizElemanlar = new ListViewItem(subElemanlar); gelenParametre.Items.Add(sirasizElemanlar); } return gelenParametre; } public Eleman[] algorithm_LISCH(Eleman[] baslangicDizi, Eleman[] elemanSunulacak) { #region EklemeBasarili elemanSunulacak = new Eleman[secondaryListCount]; for (int i = 0; i < secondaryListCount; i++) { Eleman aktariciEleman = new Eleman(); aktariciEleman.Deger = -1; aktariciEleman.HomeAddress = i % modValue; aktariciEleman.LinkAddress = "x"; elemanSunulacak[i] = aktariciEleman; } #endregion for (int i = 0; i < baslangicDizi.Length; i++) { int probeEleman = 1;//probe değerini daha yerleştirirken buluyoruz. for (int k = 0; k < secondaryListCount; k++) { int current_homeIndex = baslangicDizi[i].HomeAddress; try { if (elemanSunulacak[current_homeIndex].Deger == -1)//orada eleman yok ise { elemanSunulacak[current_homeIndex].Deger = baslangicDizi[i].Deger; elemanSunulacak[current_homeIndex].PropKaydedilen = probeEleman; k = secondaryListCount; } else if (elemanSunulacak[current_homeIndex].Deger != -1)//orada eleman var ise { bool yerbulundu_mu = false; probeEleman++; int yer_index = elemanSunulacak.Length - 1; while (yerbulundu_mu == false) { if (elemanSunulacak[yer_index].Deger == -1) { elemanSunulacak[yer_index].Deger = baslangicDizi[i].Deger; elemanSunulacak[yer_index].PropKaydedilen = probeEleman; #region Yerleştirme int link_adres_kontrol = baslangicDizi[i].HomeAddress;//belli home adresteki zincirin en altındaki verinin adres bilgisini aldım //artık en son yeni bir eleman yerleştirildi ya 2 satır üstte , heh işte bu elemanı point edecek değer biraz önce adresini bulduğumuz eleman if (elemanSunulacak[link_adres_kontrol].LinkAddress == "x")//boş ise önce doldur { elemanSunulacak[current_homeIndex].LinkAddress = Convert.ToString(yer_index);//yer_index olacak elemanSunulacak[current_homeIndex].PropKaydedilen = probeEleman; } else if (elemanSunulacak[link_adres_kontrol].LinkAddress != "x") { while (elemanSunulacak[link_adres_kontrol].LinkAddress != "x") { link_adres_kontrol = Convert.ToInt32(elemanSunulacak[link_adres_kontrol].LinkAddress); probeEleman++; } elemanSunulacak[link_adres_kontrol].LinkAddress = Convert.ToString(yer_index); elemanSunulacak[link_adres_kontrol].PropKaydedilen = probeEleman; } #endregion yerbulundu_mu = true; k = secondaryListCount; } else if (elemanSunulacak[yer_index].Deger != -1) { yer_index--; } } } } catch (Exception) { MessageBox.Show("Lütfen mod değerini mod sonucu toplam eleman sayisinden fazla çıkacak şekilde girmeyiniz."); this.Close(); } } } return elemanSunulacak; } public Eleman[] algorithm_RLISCH(Eleman[] baslangicDizi, Eleman[] elemanSunulacak) { #region EklemeBasarili elemanSunulacak = new Eleman[secondaryListCount]; for (int i = 0; i < secondaryListCount; i++) { Eleman aktariciEleman = new Eleman(); aktariciEleman.Deger = -1; aktariciEleman.HomeAddress = i % modValue; aktariciEleman.LinkAddress = "x"; elemanSunulacak[i] = aktariciEleman; } #endregion int probeEleman = 1; for (int i = 0; i < baslangicDizi.Length; i++)//Üretilen her bir elemanım için işlemleri yap. { for (int k = 0; k < secondaryListCount; k++)//Yapacağın ana işlem yerleştirilecek koşul tablonun tamamını baz alıp yer aramak. { int current_homeIndex = baslangicDizi[i].HomeAddress;//O andaki Home adresteki değerler için işlem yapılacak. try { if (elemanSunulacak[current_homeIndex].Deger == -1)//orada eleman yok ise { elemanSunulacak[current_homeIndex].Deger = baslangicDizi[i].Deger; elemanSunulacak[current_homeIndex].PropKaydedilen = probeEleman; k = secondaryListCount;//yerleştirilme yapıldı. Yerleştirilecek diğer elemanı al. }//Home adres boş olabilir. else if (elemanSunulacak[current_homeIndex].Deger != -1)//orada eleman var ise { bool yerbulundu_mu = false; probeEleman++; int yer_index = elemanSunulacak.Length - 1; Random rnd = new Random(); int random_yer = rnd.Next(0, yer_index); int bos_adres = -2; while (yerbulundu_mu == false) { if (bos_adres != -2) { random_yer = bos_adres; probeEleman++; } if (elemanSunulacak[random_yer].Deger == -1) { elemanSunulacak[random_yer] = baslangicDizi[i]; elemanSunulacak[random_yer].PropKaydedilen = probeEleman; #region Yerleştirme_RISCH bool link_buldunmu = false; int gidilecek_link = baslangicDizi[i].HomeAddress; while (!link_buldunmu) { if (elemanSunulacak[gidilecek_link].LinkAddress == "x") { elemanSunulacak[gidilecek_link].LinkAddress = random_yer.ToString();//Eğer 2. sıradaki eleman ise. link_buldunmu = true; } else { gidilecek_link = Convert.ToInt32(elemanSunulacak[gidilecek_link].LinkAddress); } } #endregion yerbulundu_mu = true; k = secondaryListCount; } else { int[] random_indisler = find_random_indis(elemanSunulacak); rnd = new Random(); random_yer = rnd.Next(0, random_indisler.Length); bos_adres = random_indisler[random_yer]; probeEleman++; } } }//Home adres dolu olabilir. } catch (Exception) { MessageBox.Show("Lütfen mod değerini mod sonucu toplam eleman sayisinden fazla çıkacak şekilde girmeyiniz."); this.Close(); } } } return elemanSunulacak; } public Eleman[] algorithm_EISCH(Eleman[] baslangicDizi, Eleman[] elemanSunulacak) { #region EklemeBasarili elemanSunulacak = new Eleman[secondaryListCount]; for (int i = 0; i < secondaryListCount; i++) { Eleman aktariciEleman = new Eleman(); aktariciEleman.Deger = -1; aktariciEleman.HomeAddress = i % modValue; aktariciEleman.LinkAddress = "x"; elemanSunulacak[i] = aktariciEleman; } #endregion for (int i = 0; i < baslangicDizi.Length; i++) { int probeEleman = 1; for (int k = 0; k < secondaryListCount; k++) { int current_homeIndex = baslangicDizi[i].HomeAddress; try { if (elemanSunulacak[current_homeIndex].Deger == -1 && current_homeIndex<=secondaryListCount)//orada eleman yok ise { elemanSunulacak[current_homeIndex].Deger = baslangicDizi[i].Deger; elemanSunulacak[current_homeIndex].PropKaydedilen = probeEleman; k = secondaryListCount; } else if (elemanSunulacak[current_homeIndex].Deger != -1)//orada eleman var ise { bool yerbulundu_mu = false; probeEleman++; int yer_index = elemanSunulacak.Length - 1; while (yerbulundu_mu == false) { if (elemanSunulacak[yer_index].Deger == -1) { elemanSunulacak[yer_index].Deger = baslangicDizi[i].Deger; elemanSunulacak[yer_index].PropKaydedilen = probeEleman; #region Yerleştirme_EISCH bool link_buldunmu = false; int gidilecek_link = baslangicDizi[i].HomeAddress; while (!link_buldunmu) { if (elemanSunulacak[gidilecek_link].LinkAddress == "x") { elemanSunulacak[gidilecek_link].LinkAddress = yer_index.ToString();//Eğer 2. sıradaki eleman ise. link_buldunmu = true; } else { elemanSunulacak[yer_index].LinkAddress = elemanSunulacak[baslangicDizi[i].HomeAddress].LinkAddress; elemanSunulacak[baslangicDizi[i].HomeAddress].LinkAddress = yer_index.ToString(); link_buldunmu = true; } } #endregion yerbulundu_mu = true; k = secondaryListCount; } else if (elemanSunulacak[yer_index].Deger != -1) { yer_index--; probeEleman++; } } } } catch (Exception) { MessageBox.Show("Lütfen mod değerini mod sonucu toplam eleman sayisinden fazla çıkacak şekilde girmeyiniz."); this.Close(); } } } return elemanSunulacak; } public Eleman[] algorithm_BEISCH(Eleman[] baslangicDizi, Eleman[] elemanSunulacak) { #region EklemeBasarili elemanSunulacak = new Eleman[secondaryListCount]; for (int i = 0; i < secondaryListCount; i++) { Eleman aktariciEleman = new Eleman(); aktariciEleman.Deger = -1; aktariciEleman.HomeAddress = i % modValue; aktariciEleman.LinkAddress = "x"; elemanSunulacak[i] = aktariciEleman; } #endregion bool isBidirectional = false; int bidirectionalCount = 2; for (int i = 0; i < baslangicDizi.Length; i++) { int probeEleman = 1; for (int k = 0; k < secondaryListCount; k++) { int current_homeIndex = baslangicDizi[i].HomeAddress; try { if (elemanSunulacak[current_homeIndex].Deger == -1 && current_homeIndex <= secondaryListCount)//orada eleman yok ise { elemanSunulacak[current_homeIndex].Deger = baslangicDizi[i].Deger; elemanSunulacak[current_homeIndex].PropKaydedilen = probeEleman; k = secondaryListCount; } else if (elemanSunulacak[current_homeIndex].Deger != -1)//orada eleman var ise { bool yerbulundu_mu = false; probeEleman++; int yer_index = elemanSunulacak.Length - 1; int yer_index_ust = 0; while (yerbulundu_mu == false) { if (elemanSunulacak[yer_index].Deger == -1)//yer bulduysan yerleştir. { elemanSunulacak[yer_index].Deger = baslangicDizi[i].Deger; elemanSunulacak[yer_index].PropKaydedilen = probeEleman; #region Yerleştirme_EISCH bool link_buldunmu = false; int counter_temizle = 0; int gidilecek_link = baslangicDizi[i].HomeAddress; while (!link_buldunmu) { if (elemanSunulacak[gidilecek_link].LinkAddress == "x") { elemanSunulacak[gidilecek_link].LinkAddress = yer_index.ToString();//Eğer 2. sıradaki eleman ise. link_buldunmu = true; } else { if (counter_temizle>=3)//aslında zincirin en altına düşecek olan değerin link'ini temizlemiş oluyorum çünkü eğer bunu yapmazsam 2.collusion olduğundaki linklediği adres üzerinde kalıyor { string temp = elemanSunulacak[baslangicDizi[i].HomeAddress].LinkAddress; elemanSunulacak[Convert.ToInt32(elemanSunulacak[baslangicDizi[i].HomeAddress].LinkAddress)].LinkAddress = "x"; elemanSunulacak[yer_index].LinkAddress = temp; elemanSunulacak[baslangicDizi[i].HomeAddress].LinkAddress = yer_index.ToString(); link_buldunmu = true; } else { string temp = elemanSunulacak[baslangicDizi[i].HomeAddress].LinkAddress; elemanSunulacak[yer_index].LinkAddress = temp; elemanSunulacak[baslangicDizi[i].HomeAddress].LinkAddress = yer_index.ToString(); link_buldunmu = true; } } counter_temizle++; } #endregion yerbulundu_mu = true; k = secondaryListCount; bidirectionalCount++; if (bidirectionalCount % 2 == 1) { isBidirectional = true; } else if (bidirectionalCount % 2 == 0) { isBidirectional = false; } } else if (elemanSunulacak[yer_index].Deger != -1 && !isBidirectional)//yer bulamadıysan bidirectional'ın ilk aşaması olan alttan yer aramayı yap değiştirilen yeni yer için ilk koşul blogu çalışsın. { yer_index--; probeEleman++; } else if (elemanSunulacak[yer_index].Deger != -1 && isBidirectional)////yer bulamadıysan bidirectional'ın ikinci aşaması olan üstten yer aramayı yap değiştirilen yeni yer için ilk koşul blogu çalışsın. { yer_index = yer_index_ust-1; yer_index++; yer_index_ust++; probeEleman++; } } } } catch (Exception) { MessageBox.Show("Lütfen mod değerini mod sonucu toplam eleman sayisinden fazla çıkacak şekilde girmeyiniz."); this.Close(); } } } return elemanSunulacak; } public Eleman[] algorithm_EICH(Eleman[] baslangicDizi,Eleman[] elemanSunulacak,int degisenAlan) { int collision_count = 0; total_area = enyakin_Asal(modValue); if (degisenAlan!=0) { total_area = degisenAlan; } int primary_value = modValue; int overflow_value = total_area - modValue; Eleman[] primary = new Eleman[primary_value]; Eleman[] overflow = new Eleman[overflow_value]; primary = eleman_baslat(primary,primary_value); overflow = eleman_baslat(overflow, overflow_value); for (int i = 0; i < baslangicDizi.Length; i++) { int probeEleman = 1; for (int k = 0; k < total_area; k++) { int current_homeIndex = baslangicDizi[i].HomeAddress; try { if (primary[current_homeIndex].Deger == -1 && current_homeIndex <= primary_value)//orada eleman yok ise { primary[current_homeIndex].Deger = baslangicDizi[i].Deger; primary[current_homeIndex].PropKaydedilen = probeEleman; k = secondaryListCount; } } catch (Exception) { MessageBox.Show("Lütfen mod değerini mod sonucu toplam eleman sayisinden fazla çıkacak şekilde girmeyiniz."); this.Close(); } } } return primary; } public Eleman[] eleman_baslat(Eleman[] baslatilacak, int count) { #region EklemeBasarili baslatilacak = new Eleman[count]; for (int i = 0; i < count; i++) { Eleman aktariciEleman = new Eleman(); aktariciEleman.Deger = -1; aktariciEleman.HomeAddress = i % modValue; aktariciEleman.LinkAddress = "x"; baslatilacak[i] = aktariciEleman; } return baslatilacak; #endregion } #endregion public int enyakin_Asal(int gelenDeger) { int bak, kontrol_et, son = 0, asal_mı; for (bak = gelenDeger + 1; bak > gelenDeger; bak++) { asal_mı = 1; for (kontrol_et = 2; kontrol_et < bak; kontrol_et++) { if (bak % kontrol_et == 0) { asal_mı = 0; break; } } if (asal_mı == 1) { son = bak; bak = 0; } } return son; } private void btnSort_Click(object sender, EventArgs e) { btnAra.Enabled = true; txtAra.Enabled = true; txtElemanSayisi.Enabled = true; txtMax.Enabled = true; txtMin.Enabled = true; txtMod.Enabled = true; rischPerformans = ""; eischPerformans = ""; lischPerformans = ""; beischPerformans = ""; if (islem_say >= 0) { if (txtMin.Text!=""||txtMax.Text!="") { try { if (txtMin.Text!="") { min_value = Convert.ToInt32(txtMin.Text.ToString()); } if (txtMax.Text != "") { max_value = Convert.ToInt32(txtMax.Text.ToString()); } } catch (Exception) { MessageBox.Show("Lütfen Max ve Min değerlerini sayi olarak giriniz."); } } if (txtMod.Text!="") { try { modValue = Convert.ToInt32(txtMod.Text.ToString()); } catch (Exception) { MessageBox.Show("Lütfen Mod değerini sayi olarak giriniz."); } } if (txtElemanSayisi.Text!="") { try { randomElemanSayisi = Convert.ToInt32(txtElemanSayisi.Text.ToString()); } catch (Exception) { MessageBox.Show("Lütfen Eleman Sayisi değerini sayi olarak giriniz."); } } else if (txtElemanSayisi.Text=="") { randomElemanSayisi = temp.Next(15, 20); } packingFactor = temp.Next(93, 96); secondaryListCount = (randomElemanSayisi * 100) / packingFactor+1; lstView_Unsorted.Items.Clear(); listViewSirali.Items.Clear(); lstViewEISCH.Items.Clear(); lstViewBEISCH.Items.Clear(); lstViewRISCH.Items.Clear(); lstViewEich.Items.Clear(); elemanUretilen = new Eleman[randomElemanSayisi]; elemanUretilen = item_producer(elemanUretilen, randomElemanSayisi); sirasiz = lstView_Unsorted; lstLISCH = listViewSirali; lstEISCH = lstViewEISCH; lstRISCH = lstViewRISCH; lstBEISCH = lstViewBEISCH; lstEICH = lstViewEich; addItems_To_ListView_HomeAdres(sirasiz, randomElemanSayisi, elemanUretilen); Eleman[] eleman_to_sirali; switch (cmbChoose.Text) { case "LISCH": eleman_to_sirali = new Eleman[secondaryListCount]; st_lish.Start(); eleman_to_sirali = algorithm_LISCH(elemanUretilen, eleman_to_sirali); st_lish.Stop(); lischPerformans = st_lish.ElapsedMilliseconds.ToString(); addItems_To_ListView(lstLISCH, secondaryListCount, eleman_to_sirali);//LISCH break; case "RLISCH": eleman_to_sirali = new Eleman[secondaryListCount]; st_rlish.Start(); eleman_to_sirali = algorithm_RLISCH(elemanUretilen, eleman_to_sirali); st_rlish.Stop(); rischPerformans = st_rlish.ElapsedMilliseconds.ToString(); addItems_To_ListView(lstRISCH, secondaryListCount, eleman_to_sirali);//RISCH break; case "EISCH": eleman_to_sirali = new Eleman[secondaryListCount]; st_eish.Start(); eleman_to_sirali = algorithm_EISCH(elemanUretilen, eleman_to_sirali); st_eish.Stop(); eischPerformans = st_eish.ElapsedMilliseconds.ToString(); addItems_To_ListView(lstEISCH, secondaryListCount, eleman_to_sirali);//EISCH break; case "BEISCH": eleman_to_sirali = new Eleman[secondaryListCount]; st_beish.Start(); eleman_to_sirali = algorithm_BEISCH(elemanUretilen, eleman_to_sirali); st_beish.Stop(); beischPerformans =st_beish.ElapsedMilliseconds.ToString(); addItems_To_ListView(lstBEISCH, secondaryListCount, eleman_to_sirali);//BEISCH break; case "EICH": eleman_to_sirali = new Eleman[secondaryListCount]; st_eish.Start(); eleman_to_sirali = algorithm_EISCH(elemanUretilen, eleman_to_sirali); st_eish.Stop(); eischPerformans = st_eish.ElapsedMilliseconds.ToString(); addItems_To_ListView_EICH(lstEICH, secondaryListCount, eleman_to_sirali, modValue, enyakin_Asal(modValue) - modValue); break; case "HEPSİ": eleman_to_sirali = new Eleman[secondaryListCount]; st_lish.Start(); eleman_to_sirali = algorithm_LISCH(elemanUretilen, eleman_to_sirali); st_lish.Stop(); lischPerformans = st_lish.Elapsed.ToString(); addItems_To_ListView(lstLISCH, secondaryListCount, eleman_to_sirali);//LISCH eleman_to_sirali = new Eleman[secondaryListCount]; st_eish.Start(); eleman_to_sirali = algorithm_EISCH(elemanUretilen, eleman_to_sirali); st_eish.Stop(); eischPerformans = st_eish.Elapsed.ToString(); addItems_To_ListView(lstEISCH, secondaryListCount, eleman_to_sirali);//EISCH eleman_to_sirali = new Eleman[secondaryListCount]; st_beish.Start(); eleman_to_sirali = algorithm_BEISCH(elemanUretilen, eleman_to_sirali); st_beish.Stop(); beischPerformans = st_beish.Elapsed.ToString(); addItems_To_ListView(lstBEISCH, secondaryListCount, eleman_to_sirali);//BEISCH eleman_to_sirali = new Eleman[secondaryListCount]; st_rlish.Start(); eleman_to_sirali = algorithm_RLISCH(elemanUretilen, eleman_to_sirali); st_rlish.Stop(); rischPerformans = st_rlish.Elapsed.ToString(); addItems_To_ListView(lstRISCH, secondaryListCount, eleman_to_sirali);//RISCH eleman_to_sirali = new Eleman[secondaryListCount]; st_eish.Start(); eleman_to_sirali = algorithm_EISCH(elemanUretilen, eleman_to_sirali); st_eish.Stop(); eischPerformans = st_eish.Elapsed.ToString(); addItems_To_ListView_EICH(lstEICH, secondaryListCount, eleman_to_sirali, modValue, enyakin_Asal(modValue) - modValue); break; default: break; } } lblPackingFactorValue.Text = packingFactor.ToString(); islem_say++; } #region Arama_İşlemleri private void btnAra_Click(object sender, EventArgs e) { try { int aranacakDeger = Convert.ToInt32(txtAra.Text.ToString()); try { int probeReturnLisch = probeBul(aranacakDeger, aranacakDeger % modValue, lstLISCH); int probeReturnEisch = probeBul(aranacakDeger, aranacakDeger % modValue, lstEISCH); int probeReturnBeisch = probeBul(aranacakDeger, aranacakDeger % modValue, lstBEISCH); int probeReturnRisch = probeBul(aranacakDeger, aranacakDeger % modValue, lstRISCH); MessageBox.Show("Probe LISCH: " + probeReturnLisch.ToString() + "\n" + "Probe EISCH: " + probeReturnEisch.ToString() + "\n" + "Probe BEISCH: " + probeReturnBeisch.ToString() + "\n" + "Probe RISCH: " + probeReturnRisch.ToString()); } catch (Exception) { MessageBox.Show("Değer bulunamadı."); } } catch (Exception) { MessageBox.Show("Lütfen aranacak değer giriniz."); } } public int probeBul(int aranacakEleman,int aranacakHomeAddress,ListView aranacakList) { bool bulundu_mu = false; bool sona_geldimi = false; int i = aranacakHomeAddress; int k = 1; int probe = 0; while (!bulundu_mu&&!sona_geldimi) { if (i <aranacakList.Items.Count) { if (aranacakEleman == Convert.ToInt32(aranacakList.Items[i].SubItems[k].Text.ToString())) { bulundu_mu = true; } else { i = Convert.ToInt32(aranacakList.Items[i].SubItems[k + 1].Text.ToString()); } probe++; } else if(i == aranacakList.Items.Count) { sona_geldimi = true;//islem basarisiz. } } return probe; } public int probeBul(Eleman[] elemanDizisi, Eleman aranacakEleman) { int counter = 1; int link_Degeri = aranacakEleman.HomeAddress; bool buldunmu = false; int i = 0; while (!buldunmu && elemanDizisi.Length != i) { if (aranacakEleman.Deger == elemanDizisi[link_Degeri].Deger) { buldunmu = true; } else { link_Degeri = Convert.ToInt32(elemanDizisi[link_Degeri].LinkAddress); counter++; } } return counter; } public double fullProbeBul(ListView aranacakList) { double fullProbeValue = 0; int k = 1; int[] dizi = new int[aranacakList.Items.Count]; for (int i = 0; i < aranacakList.Items.Count; i++) { if (Convert.ToInt32(aranacakList.Items[i].SubItems[k].Text.ToString())!=-1) { int siradakiAranan = Convert.ToInt32(aranacakList.Items[i].SubItems[k].Text.ToString()); //dizi[i] = probeBul(siradakiAranan, siradakiAranan % modValue, lstRISCH); int temp= probeBul(siradakiAranan, siradakiAranan % modValue, lstRISCH); fullProbeValue += temp; } } return fullProbeValue/aranacakList.Items.Count; } #endregion private void btnCikis_Click(object sender, EventArgs e) { this.Close(); } private void btnPerformans_Click(object sender, EventArgs e) { rischPerformans = ""; eischPerformans = ""; lischPerformans = ""; beischPerformans = ""; btnSort_Click(sender, e); if (lstLISCH.Items.Count!=0&&lstBEISCH.Items.Count != 0 && lstRISCH.Items.Count != 0 && lstEISCH.Items.Count != 0) { lblLischAverage.Text = lischPerformans.ToString(); lblBeischAverage.Text = beischPerformans.ToString(); lblEischAverage.Text = eischPerformans.ToString(); lblRischAverage.Text = rischPerformans.ToString(); } else { MessageBox.Show("Tüm yöntemler için sıralama yaptıktan sonra performans değerleri için ölçüm yapabilirsiniz."); } }
static int islem_say = 1; static Random temp = new Random(); string lischPerformans, rischPerformans, eischPerformans, beischPerformans; private ListView sirasiz = new ListView(); private ListView lstLISCH = new ListView(); private ListView lstRISCH = new ListView(); private ListView lstEISCH = new ListView(); private ListView lstBEISCH = new ListView();private ListView lstEICH = new ListView(); public Eleman[] elemanUretilen; public int[] listeBas = new int[10]; int total_area; public int randomElemanSayisi; public int packingFactor; public int modValue; public int secondaryListCount; public int min_value; public int max_value; public ComboBox process_Choose; Stopwatch st_lish = new Stopwatch(); Stopwatch st_rlish = new Stopwatch(); Stopwatch st_eish = new Stopwatch(); Stopwatch st_beish = new Stopwatch(); #region Methodlar public int[] find_random_indis(Eleman[] elemanDolas_gelen) { int bos_say = 0; int[] boslar = new int[elemanDolas_gelen.Length]; for (int i = 0; i < elemanDolas_gelen.Length; i++) { if (elemanDolas_gelen[i].Deger == -1) { boslar[i] = i; bos_say++; } else//dolu ise orayı -2 yap { boslar[i] = -2; } } return boslar; } private Eleman[] item_producer(Eleman[] uret
- algorithm
Son Yayinlar
-
-
January 01, 2018
-
December 12, 2017
-
November 11, 2017
-
October 10, 2017
-
October 10, 2017
Beklenen Güncellemeler
Yorum(0)