Merhaba
Aktif taglardan veri alıp biriktiren bir 18f45k22 mcu var.
Aktif taglardan aldığım 4byte id bilgisini 2 boyutlu dizide saklıyorum.
Aynı id yi tekrar kaydetmemek için dizide arama yapıyorum. Kayıtlı değil ise yeni bir indexe kaydediyorum.
Sorun şu.
Arama yaparken Diziyi 0nci index ten başlayıp tarıyorum.
Bu işlem 500 elemanlı bir dizide zaman alabiliyor.
Logaritmik arama yaptırabilmek için dizinin sıralı olması gerekiyor.
Bu işlemi daha pratik yapmak için bir önerisi olan var mı ?
c++ kulanma sansin varsa set ve map fonksiyonlarina bakabilirsin aksi durumda hash kodu kullanabilirsin.
4byte'lık ID dizisi rasgele kayıtlı ise ise algoritmalar verimli çalışamaz çünkü sıralama yok.
Burada yapılacak en hızlı çözüm, verileri 4'er byte yerine birer byte olarak karşılaştırmak, en çok değişen byte, LSB byte'tır, once bunları karşılaştır, eşit değilse geç, eşitse bir üst byte'larını karşılaştır, bu şekilde hızlanırsın.
Ama karşılaştırmaları yapmak için structer pointer veya struct yerine u8 pointer kullan ve sonraki adresler için pointer'e 4 ekle (sonraki tag'ın LSB için).
Hash table konusuna bakabilirsin.
hash table işi kafama yattı teşekkürler.