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.
Flowchart: tekleri ve çifteleri grup yapan algoritma.pdf
Aşağıda ki python kodlarına bakalım.
Kod Bloğum:
import random random.seed() #Prepare random number generator import time n = 10000 a = [0] * (n) st=time.time() for i in range(0, n - 1 + 1, 1): a[i] = int(random.random() * 25) + 1 for i in range(0, n - 1 + 1, 1): if a[i] % 2 == 0: tempc = i for j in range(i + 1, n - 1 + 1, 1): if a[j] % 2 == 0: pass else: temp = a[j] a[j] = a[tempc] a[tempc] = temp tempc = j et=time.time() Exacution_time=et-st print("Exacution Time: ",Exacution_time)
Bu algoritmanın hız testini Jupyter compiler’ı üzerinde test ettim ve sonuçları aşağıda paylaşıyorum.
Sonuç :
Görüldüğü gibi 100.000 adet bir veri seti için algoritmam 461,61119 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.