Bir Dizideki Tek Sayıları ve Çift Sayıları Kendi İçinde Grup Yapan Algoritma

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

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir