Dizideki yineleme miktarını en iyileştirme görevim var.Optimizasyon dizisi işlemleri
Böyle bir kaynak dizisi vardır:
0-yok özelliği, 1int[] dataArray = new int[10] {0, 1, 1, 1, 0, 0, 0, 0, 1, 0};
- mevcut bulunmaktadır. Bu
public struct MyDataStruct
{
public int Index; //index in array
public int Value; //some value
}
ayrıca bazı özelliğin reprezentation iki yolu vardır: ideal olarak ben SADECE OptimizedKeyValueArray1 kullanmak ve NotOptimizedKeyValueArray1 tüm usings kaldırmak gerekir. Ben yinelerler çünkü
int[] inputArray = new int[10] {0, 1, 1, 1, 0, 0, 0, 0, 1, 0};
MyDataStruct[] resultDataSet = new MyDataStruct[10];
, ölçeklenebilir Bu, bu görevin benim çözüm, ancak optimize edilmediğini ve yok: Ben resultArray, inputArray aynı miktar olması gerekir Sonuç olarak
public static readonly MyDataStruct[] NotOptimizedKeyValueArray1 =
{
new MyDataStruct(0, -1),
new MyDataStruct(1, 1000),
new MyDataStruct(2, 2500),
new MyDataStruct(3, 4500),
new MyDataStruct(4, -1),
new MyDataStruct(5, -1),
new MyDataStruct(6, -1),
new MyDataStruct(7, -1),
new MyDataStruct(8, 6500),
new MyDataStruct(9, -1)
};
public static readonly MyDataStruct[] OptimizedKeyValueArray1 =
{
new MyDataStruct(1, 1000),
new MyDataStruct(2, 2500),
new MyDataStruct(3, 4500),
new MyDataStruct(8, 6500)
};
Benim için önemli olmayan unsurlar üzerinde ve onu çok başlangıçtan biliyorum. Sonuç olarak ben 10 unsurları vardır:
for(int i = 0; i < dataArray.Length; i++)
{
resultDataSet[i] = new MyDataStruct(i, dataArray[i]);
}
Ama nedense daha verimli çalışması ve 0 değerli elemanları üzerinde ilerlerken DEĞİL gerekir. Ancak, bu kod uyarınca, yalnızca 4 eleman oluşturacağım, bazı varsayılan değerler ile diğer 6 öğeye sahip olmam gerekiyor. Ve daha verimli bir şekilde nasıl yapılacağını bilmiyorum. Bu görevi gerçekleştirmek için dizi üzerinde daha verimli algoritmalar önerebilirsiniz. Teşekkürler.
kullanımını bu linq deyimi int [] inputArray2 = inputArray.Where (öğe => madde == 1) .ToArray() ; gereksinimi göre sadece dört öğe almak ve daha sonra döngü üzerinde çalıştırmak için – rashfmnb
Hayır linq, kullanamıyorum. – yozhik
Bu ev ödevi mi? Yalnızca etkinleştirilmiş değerler üzerinde yinelemek istiyorsanız, diziyi featureflag ile sıralamanız gerekir. Ardından, basit bir son durum olan engelli bir özelliğe basana kadar dizinin üzerine tekrar girebilirsiniz. –