Rastgele oluşturulmuş bir dizi içindeki sayıları tek ve çiftler kendi içinde grup olacak şekilde sıralayan bir algoritma yapalım. Tek sayılar dizinin sol tarafında çift sayılar ise sağ tarafta kümelensin. Sayıların küçükten büyüğe sıralanmasına gerek yok. (şimdilik 🙂 )
Flowgorithm uygulaması ile yaptığım bir flowchartı aşağıda incelemenize sundum.
Ayrıca programın tamamını da buradan indirebilirsiniz.
Aşağıda ki python kodlarına bakalım.
import random import time # Prepare random number generator random.seed() n = 100000 a = [0] * n # Measure start time st = time.time() # Fill the array with random integers between 1 and 25 for i in range(n): a[i] = int(random.random() * 25) + 1 # Rearrange the array based on the given conditions for i in range(n): if a[i] % 2 == 0: # If the current number is even tempc = i for j in range(i + 1, n): if a[j] % 2 != 0: # If the next number is odd # Swap a[j] and a[tempc] temp = a[j] a[j] = a[tempc] a[tempc] = temp tempc = j # Measure end time et = time.time() # Calculate execution time execution_time = et - st print("Execution Time: ", execution_time)
Bu algoritmanın hız testini Jupyter compiler’ı üzerinde test ettim ve sonucu aşağıda paylaşıyorum.
Sonuç : 506.00016689300537 sn
Görüldüğü gibi 100.000 adet bir veri seti için algoritmam 506,00017 saniye sürüyor.
Sizce bu süre daha da hızlandırılabilir mi?
Not: time.time() wall clock time’ı kullanır. CPU’nun yürütme süresini ölçümleyerek bir kıyaslama yapmak istersek time.process_time() kullanmak gerekir. Kaynakların bekleme süresini nihai sonuca dahil etmek istemiyorsak bu çözümü kullanmak en güzeli.
Kolay gele…
İlk Yorumu Siz Yapın