Sorunu doğru anlarsam (ve bilmiyorsam, bilmiyorsam bana söylemekten çekinmeyin), bir 2D ızgarayı sıralanmış bir 1D dizisine dönüştürmek istersiniz, oysa her satır ve sütun zaten 2D ızgarada sıralanır mı?
Bu durumda listedeki ilk eleman, sorunun tanımına göre sol üst köşe ((0,0)) olmalıdır. Bundan sonra, (1,0) veya (0,1) öğesi olmalıdır, çünkü diğerleri tanım gereği daha büyük olacaktır.
Izgaradaki bir sonraki en küçük öğenin her zaman doğrudan kullanılan bir öğenin (veya ızgara kenarının) hemen altında olduğunu ve ayrıca zaten kullanılan bir öğenin (veya ızgara kenarının) sağında olduğunu söyleyerek genelleştirebilirsiniz. ondan daha küçük olarak tanımlanır. Bu nedenle, her yinelemede yalnızca bu gereksinimi karşılayan en küçük değeri göz önünde bulundurmalısınız.
Olası adayları buldukları sırada sıralı bir şekilde tutabilirsiniz (bir yinelemede ikiden fazla kullanılamaz) ve her yinelemede mevcut olan yeni değerleri (varsa) kontrol edin. Önceki adayların en düşüklerinden daha düşükse, bunları listeye hemen ekleyin ve tekrarlayın, aksi takdirde önceki en düşük adayı ekleyin ve bir sonraki en düşük adayla karşılaştırın vb.
Ne yazık ki bunun tam bir karmaşıklığını sağlayabildiğimi iddia etmiyorum, bunun mümkün olan en verimli olduğunu iddia etmiyorum, kesinlikle naif bir yaklaşımdan daha iyi görünüyor ve umarım anlamanız için yeterince iyi açıkladım.
DÜZENLEME: Bunun gibi ızgaralar için aynı temel ilkenin geçerli olduğuna inanıyorum, ancak her yineleme n yeni adayı oluşturuyor ve bu adayların bu noktada n boyutunun her birindeki en küçük kullanılmamış öğeler olması gerekiyor.