1 milyon 8 haneli RAM 1MB numaraları sıralama
RAM 1M ile bir bilgisayar ve başka bir yerel depolama var. 1 milyon 8 haneli bir TCP bağlantısı üzerinden ondalık sayılar kabul etmek, sıralamak ve sıralanmış listesini başka bir TCP bağlantısı üzerinden göndermek zorundayım. Numaralar listesine atmak zorundayım olmayan çiftleri içerebilir. Kod 1M benim kod boyutunu çıkarmak lazım değil o yüzden ROM yer olacak. Ben zaten ethernet port sürücü ve TCP/IP bağlantıları işlemek için kod var, ve hangi aracılığıyla Kodu ve veri okuma ve yazma 1k bir tampon da dahil olmak üzere devletin kendi verileri için 2k gerektirir. Bu sorun için bir çözüm var mı?
Soru-Cevap Kaynaklar:
slashdot.org
CEVAP
Sorunu çözer Here's some working C code.
Bellek kısıtlamaları memnun olduğunun kanıtı:
Editör:Maksimum bellek gereksinimlerini de onun bloglarda bu yazı veya yazar tarafından sunulan kanıt yok. Bit değeri kodlamak için gereken bir dizi değerleri, daha önce kodlanmış bağlı olduğundan, bu tür bir kanıt muhtemelen önemsiz değil. Yazar, deneysel olarak takılmaları olabilir büyük kodlanmış boyutu 1011732
, ve Tampon boyutu 1013000
keyfi olarak seçtiğini belirtiyor.
typedef unsigned int u32;
namespace WorkArea
{
static const u32 circularSize = 253250;
u32 circular[circularSize] = { 0 }; // consumes 1013000 bytes
static const u32 stageSize = 8000;
u32 stage[stageSize]; // consumes 32000 bytes
...
Birlikte, bu iki dizi depolama 1045000 bayt al. Bu 1048576 - 1045000 - 2&kez;1024 = 1528 kalan değişkenler için bayt ve yığın alanı bırakır.
"Çok çekirdekli benim W3520 yaklaşık 23 saniye içinde çalışır. Programı aşağıdaki Python betiği kullanarak çalışan, sort1mb.exe
program adı varsayarsak doğrulayabilirsiniz.
from subprocess import *
import random
sequence = [random.randint(0, 99999999) for i in xrange(1000000)]
sorter = Popen('sort1mb.exe', stdin=PIPE, stdout=PIPE)
for value in sequence:
sorter.stdin.write('d\n' % value)
sorter.stdin.close()
result = [int(line) for line in sorter.stdout]
print('OK!' if result == sorted(sequence) else 'Error!')
Algoritma ayrıntılı bir açıklama mesajlar aşağıdaki dizi içinde bulunabilir:
Nasıl crowdsourced bir sıralama ile bi...
Sıralama Python sözlük değeri...
C için doğru sürüm numaraları ne#?...
Bir Harita nasıl sıralama<Key, Valu...
Kolay mülakat zor soru var: 1..100, ek...