public void MoveToDown(int index) { int largerChild; HeapDugumu top = heapArray[index]; while (index < currentSize / 2) { int leftChild = 2 * index + 1; int rightChild = leftChild + 1; //Find larger child if (rightChild < currentSize && heapArray[leftChild].urun.SatisFiyati > heapArray[rightChild].urun.SatisFiyati) { largerChild = rightChild; } else { largerChild = leftChild; } if (top.urun.SatisFiyati <= heapArray[largerChild].urun.SatisFiyati) { break; } heapArray[index] = heapArray[largerChild]; index = largerChild; } heapArray[index] = top; }
public HeapDugumu RemoveMax() // Remove maximum value HeapDugumu { HeapDugumu root = heapArray[0]; heapArray[0] = heapArray[--currentSize]; MoveToDown(0); return(root); }
public bool Insert(Urun u) { if (currentSize == maxSize) { return(false); } HeapDugumu newHeapDugumu = new HeapDugumu(u); heapArray[currentSize] = newHeapDugumu; MoveToUp(currentSize++); return(true); }
public void MoveToUp(int index) { int parent = (index - 1) / 2; HeapDugumu bottom = heapArray[index]; while (index > 0 && heapArray[parent].urun.SatisFiyati > bottom.urun.SatisFiyati) { heapArray[index] = heapArray[parent]; index = parent; parent = (parent - 1) / 2; } heapArray[index] = bottom; }
public bool Insert(Urun yeniUrun) { if (currentSize == maxSize) { return(false); } HeapDugumu newHeapDugumu = new HeapDugumu(yeniUrun); heapArray[currentSize] = newHeapDugumu; currentSize++; siftUp(currentSize - 1); return(true); }
public HeapDugumu RemoveMin() { HeapDugumu yeniHP = new HeapDugumu(); if (currentSize == 0) { return(null); throw new Exception("Heap boş!"); } else { yeniHP = heapArray[0]; heapArray[0] = heapArray[currentSize - 1]; currentSize--; if (currentSize > 0) { siftDown(0); } } return(yeniHP); }
private void button12_Click(object sender, EventArgs e) { listUcuzUrun.Items.Clear(); listUcuzUrun.View = View.Details; double tutar = 0; Heap h = new Heap(1000); HeapDugumu heap = new HeapDugumu(); foreach (Kategori k in Form1.market.Kategoriler) { if (k.KategoriIsmi == cmbUcuzKategori.Text) { k.Agac.InOrder(); foreach (İkiliAramaAgacDugumu d in k.Agac.dugumler) { foreach (Urun u in d.Urunler) { for (int j = 0; j < u.Miktar; j++) { h.Insert(u); } } } } } foreach (Musteri m in Form1.market.Musteriler) { if (m.KullaniciAdi == must.KullaniciAdi) { if (h.currentSize >= Convert.ToUInt32(txtAdet.Text)) { for (int i = 0; i < Convert.ToUInt32(txtAdet.Text); i++) { heap = h.RemoveMax(); if ((heap.urun.Miktar - 1) == 0) { foreach (Kategori k in Form1.market.Kategoriler) { if (cmbUcuzKategori.Text == k.KategoriIsmi) { k.Agac.InOrder(); foreach (İkiliAramaAgacDugumu d in k.Agac.dugumler) { foreach (Urun u in d.Urunler) { if (heap.urun.Marka == u.Marka && heap.urun.Model == u.Model) { foreach (Urun u3 in m.Siparis) { if (u3.UrunAdi == u.UrunAdi && u3.Marka == u.Marka && u3.Model == u.Model) { m.Siparis.Remove(u3); break; } } m.Gecmis.Add(u); Form1.gelir += u.SatisFiyati; Form1.gider += u.Maliyet; d.Urunler.Remove(u); break; } } } } } } else { foreach (Kategori k in Form1.market.Kategoriler) { if (cmbUcuzKategori.Text == k.KategoriIsmi) { k.Agac.InOrder(); foreach (İkiliAramaAgacDugumu d in k.Agac.dugumler) { foreach (Urun u in d.Urunler) { if (heap.urun.Marka == u.Marka && heap.urun.Model == u.Model) { Urun u2 = new Urun(); u2.Maliyet = u.Maliyet; u2.Marka = u.Marka; u2.Miktar = 1; u2.Model = u.Model; u2.SatisFiyati = u.SatisFiyati; u2.UrunAdi = u.UrunAdi; u2.Aciklaması = u.Aciklaması; u2.Miktar = 1; u.Miktar--; m.Gecmis.Add(u2); Form1.gelir += u.SatisFiyati; Form1.gider += u.Maliyet; break; } } } } } } tutar += heap.urun.SatisFiyati; listUcuzUrun.Items.Add(heap.urun.UrunAdi); listUcuzUrun.Items[i].SubItems.Add(heap.urun.Marka); listUcuzUrun.Items[i].SubItems.Add(heap.urun.Model); listUcuzUrun.Items[i].SubItems.Add(1.ToString()); listUcuzUrun.Items[i].SubItems.Add(heap.urun.SatisFiyati.ToString()); listUcuzUrun.Items[i].SubItems.Add(heap.urun.Aciklaması); } lblUcuzTutar.Text = tutar.ToString(); MessageBox.Show("Listedeki Ürünler Başarı ile Alındı.!!"); } else { MessageBox.Show("Bu kategoride bu kadar ürün mevcut değil..!"); } } } }