Video: Yığın (Heap) ve Yığın Sıralaması (Heap Sort) Veri Yapıları 11 2024
İlk önce bir maddeyi sıralamadan bir listede bulmaya çalışalım düşünün. Her arama, zaman alan bir sıralı arama haline gelir. Fakat, algoritmalar için veri sıralama için bir dava yapılabilir. Sonuçta, verileri sıralamasanız bile erişebilirsiniz - ve sıralama zaman alır.
Tabii ki, sıralanmamış verilerle ilgili sorun, mutfağınızdaki önemsiz çekmece (ya da önemsiz çekmecenize sahip olduğunuz yerde - onu bulabileceğinizi varsayarsak) ile aynı sorundur. Hurda çekmecede bir şey bulmak zaman harcıyor çünkü nereden bulacağınızı tahmin etmeyeceksiniz. Sadece ulaşmak ve istediğiniz şeyi almak yerine, bir şeye ihtiyacınız olan bir öğeyi bulmak için istemediğiniz diğer sayısız maddeyi çıkarmanız gerekir. Ne yazık ki, ihtiyaç duyduğunuz öğe ilk etapta önemsiz çekmecede olmayabilir - dışarı atmış ya da farklı bir çekmeceye koymuş olabilirsiniz.
Evinizdeki önemsiz çekmece, sisteminizdeki sıralanmamış veriler gibidir. Veriler ayrıştırılmadığında, bir seferde bir öğeyi aramanız gerekir; ayrıca, önce veri kümesindeki her öğeyi aramadan, ihtiyacınız olan şeyi bulup bulamayacağınızı bilmiyorsunuzdur. Verilerle çalışmak için sinir bozucu bir yol.
Tabii ki, basitçe verileri sıralama yeterli değil. Soyadı ile sıralanmış bir çalışan veritabanınız varsa, ancak doğum tarihine kadar bir çalışana bakmanız gerekiyorsa, sıralama yararlı değildir. (Bir doğum gününü belirli bir günde bulan tüm çalışanları bulmak istediğinizi varsayalım.) İhtiyacınız olan doğum tarihini bulmak için, tüm veri kümesini bir seferde bir öğe aramak zorundasınız. Sonuç olarak sıralama belirli bir ihtiyaca odaklanmalıdır. Evet, çalışanın veritabanını bir noktada departmana göre ve diğer bir anda soyadına göre sıralamış olmalısın, ancak şimdi veri setini etkili bir şekilde kullanmak için doğum tarihine göre sıralamaya ihtiyacın var.
Aynı veri için birkaç sıralı sipariş verme ihtiyacı, geliştiricilerin dizin oluşturmasına neden olur. Küçük bir dizin sıralama, tüm veri kümesini sıralama işleminden daha hızlıdır. Dizin, belirli bir veri düzenini korur ve ihtiyacınız olanı son derece hızlı bulabilmeniz için tam veri kümesine işaret eder. Her sıralama gereksinimi için bir dizin tutarak, etkin bir şekilde veri erişim süresini kısaltabilir ve birkaç kişinin verilere erişmesi gereken sırada aynı saatte erişmesine izin verebilirsiniz.
Sıralama algoritmalarını kategorize etmek için pek çok yol mevcuttur. Bu yollardan biri de çeşitlerin hızıdır. Belirli bir sıralama algoritmasının verilerin düzenlenmesinde ne denli etkilediğini düşünürsek, zamanlama ölçütleri genellikle iki faktöre bakar:
- Karşılaştırmalar: Verileri bir veri kümesindeki bir konumdan diğerine taşımak için nereye taşıyacağını bilmelisiniz, bu da hedef veriyi veri kümesindeki diğer veriyle karşılaştırmak anlamına gelir.Daha az karşılaştırma yapılması, daha iyi bir performans anlamına gelir.
- Değişim: Bir algoritma yazdığınıza bağlı olarak, veriler ilk denemedeki veri kümesindeki son konumuna ulaşmayabilir. Veriler aslında birkaç kez hareket edebilir. Borsaların sayısı, hızı önemli derecede etkiliyor çünkü şimdi verileri hafızadaki bir konumdan diğerine taşıyorsunuz. Daha az ve daha az borsa (endeksler kullanılırken olduğu gibi) daha iyi bir performans demektir.