:-) sırayı korumaya çalışmazsanız, zaman O(1) , tüm döngülerin toplam adım sayısı = dizi boyutu
kodlamak için çok tembel :-)
1. Soldan sağa ilk 3-ku'yu arıyoruz.
2. Bulunursa, o zaman sağdan sola üç olmayanı arıyoruz., bulunanı 3'ün yerine kopyalayın.
1,2 kesişene kadar devam edin, diziyi kopya sayısına göre kesin.
ideolojik olarak, bu tam olarak "kabarcık sıralama" nın 1/2'sidir :-) kopyalamak yerine takas yaparsanız, çıktı kısmen sıralı bir dizidir (tüm 3'ler sağa taşınır)
Tüm döngülerin toplam adım sayısı = dizi boyutu O(n) karmaşıklığıdır. Girdi dizisi sıralanırsa, sorun ikili arama yoluyla çözülür. Karmaşıklık ortalama olarak O(log(n)) ve en kötü durumlarda O(n)'dir.
oldukça kompakt ve hatta düzgün çalışıyor. Peter'a saygılar. Ancak hız açısından sondan ikinci sırada yer alıyor. Veya sondan ilk yer, bu şubenin sahibinin orijinal versiyonu hariç, hız için tamamen uygun değil.
Bravo! Birkaç hatayı düzelttikten sonra ArrayCopy kullanmadan bile beni kaidemden attınız. Şah Mat. :))
Gerçek pek öyle değil çünkü. çıktıda, dizi tamamen farklıdır - zaten karıştırılmıştır. Ama yine de havalı!
Alıntılarla uğraşıyorsak, bu seçenek elbette uygun değildir. Kaideye geri döndüm. ))
Sağlama toplamının hesaplanma şeklini değiştirdim. Artık tüm öğelerin basit bir toplamı değil, toplam - (eleman değeri) / (eleman numarası). Ve işte olanlar:
2018.11 . 1404 : 20 : 26.063 ArrayDeleteValue (USDRUB,M1) вариант Pastushak: Контрольная сумма = 7090.600736767353 ; элементов - 999003 ; время выполнения = 132291 микросекунд
2018.11 . 1404 : 20 : 26.067 ArrayDeleteValue (USDRUB,M1) вариант Korotky: Контрольная сумма = 7090.600736767353 ; элементов - 999003 ; время выполнения = 2322 микросекунд
2018.11 . 1404 : 20 : 26.071 ArrayDeleteValue (USDRUB,M1) вариант Fedoseev: Контрольная сумма = 7090.600736767353 ; элементов - 999003 ; время выполнения = 1831 микросекунд
2018.11 . 1404 : 20 : 26.074 ArrayDeleteValue (USDRUB,M1) вариант Semko: Контрольная сумма = 7090.600736767353 ; элементов - 999003 ; время выполнения = 773 микросекунд
2018.11 . 1404 : 20 : 26.079 ArrayDeleteValue (USDRUB,M1) вариант Pavlov: Контрольная сумма = 7090.600736767353 ; элементов - 999003 ; время выполнения = 2879 микросекунд
2018.11 . 1404 : 20 : 26.085 ArrayDeleteValue (USDRUB,M1) вариант Nikitin: Контрольная сумма = 7093.903216084301 ; элементов - 998017 ; время выполнения = 3605 микросекунд
2018.11 . 1404 : 20 : 26.090 ArrayDeleteValue (USDRUB,M1) вариант Vladimir: Контрольная сумма = 7090.600736767353 ; элементов - 999003 ; время выполнения = 3622 микросекунд
2018.11 . 1404 : 20 : 26.100 ArrayDeleteValue (USDRUB,M1) вариант Peter: Контрольная сумма = 7090.600736767353 ; элементов - 999003 ; время выполнения = 7252 микросекунд
2018.11 . 1404 : 20 : 26.102 ArrayDeleteValue (USDRUB,M1) вариант Kuznetsov: Контрольная сумма = 7085.49357433088 ; элементов - 999003 ; время выполнения = 691 микросекунд
Bir TK için 2 kod seçeneğini karşılaştırın:
ve:
Bir kişi bunu bir saatten biraz fazla aralıklarla yazmış olabilir mi? El yazısı şüpheliAlexey, gerçekten genç yetenekleri öldürüyorsun ...
bu pazarlamacı 5 yıl satış yapamaz
Üzgünüm, öyle demek istemedim.
:-) sırayı korumaya çalışmazsanız, zaman O(1) , tüm döngülerin toplam adım sayısı = dizi boyutu
kodlamak için çok tembel :-)
1. Soldan sağa ilk 3-ku'yu arıyoruz.
2. Bulunursa, o zaman sağdan sola üç olmayanı arıyoruz., bulunanı 3'ün yerine kopyalayın.
1,2 kesişene kadar devam edin, diziyi kopya sayısına göre kesin.
ideolojik olarak, bu tam olarak "kabarcık sıralama" nın 1/2'sidir :-) kopyalamak yerine takas yaparsanız, çıktı kısmen sıralı bir dizidir (tüm 3'ler sağa taşınır)
Tüm döngülerin toplam adım sayısı = dizi boyutu O(n) karmaşıklığıdır.
Girdi dizisi sıralanırsa, sorun ikili arama yoluyla çözülür.
Karmaşıklık ortalama olarak O(log(n)) ve en kötü durumlarda O(n)'dir.
Yine de, Peter'ın seçeneğinde ustalaştı.
oldukça kompakt ve hatta düzgün çalışıyor. Peter'a saygılar.
Ancak hız açısından sondan ikinci sırada yer alıyor. Veya sondan ilk yer, bu şubenin sahibinin orijinal versiyonu hariç, hız için tamamen uygun değil.
Nasıl test ettin?
Nasıl test ettin?
Kodu öğrenin.
Kod yazamayacak kadar tembel olmanız kötüdür.
tamamen tembel olduğundan değil, ancak MT yalnızca VDS'lerde elinizin altında, ancak bunlar üzerinde deney yapmıyorlar.
aşağı yukarı şöyle:
+- 1 :-) Birkaç gün içinde kulübeden döneceğim, kontrol edeceğim ..
not. ayrıca, kodda tamamlandıktan sonra döngüye fazladan bir giriş var .. bir önemsememek, ancak kaldırabilirsiniz
tamamen tembel olduğundan değil, ancak MT yalnızca VDS'lerde elinizin altında, ancak bunlar üzerinde deney yapmıyorlar.
aşağı yukarı şöyle:
+- 1 :-) Birkaç gün içinde kulübeden döneceğim, kontrol edeceğim ..
not. ayrıca, kodda tamamlandıktan sonra döngüye fazladan bir giriş var .. bir önemsememek, ancak kaldırabilirsiniz
Bravo! Birkaç hatayı düzelttikten sonra, ArrayCopy kullanmadan bile beni kaidemden attınız . Şah Mat. :))
Bravo! Birkaç hatayı düzelttikten sonra ArrayCopy kullanmadan bile beni kaidemden attınız. Şah Mat. :))
Gerçek pek öyle değil çünkü. çıktıda, dizi tamamen farklıdır - zaten karıştırılmıştır. Ama yine de havalı!
Alıntılarla uğraşıyorsak, bu seçenek elbette uygun değildir. Kaideye geri döndüm. ))
Sağlama toplamının hesaplanma şeklini değiştirdim. Artık tüm öğelerin basit bir toplamı değil, toplam - (eleman değeri) / (eleman numarası).
Ve işte olanlar: