Python'da Sıralama Algoritmaları Uygulamasını Anlama

Unsplash'tan görüntü

Uygulamadaki her aşamada, farklı sıralama algoritmaları konusunda size rehberlik edeceğiz. Python, uygulama bileşeni olacaktır. Algoritmaya sahip olduğunuzda, onu herhangi bir dile hızlı bir şekilde entegre edebilirsiniz. Bu, dilin sözdiziminin konusudur. Sıralama için algoritmalara bir göz atın.

Python'da Bağlantılı Listeler Uygulamasını Anlama

Ekleme Sıralaması

En kolay sıralama algoritmalarından biri ekleme türüdür. Uygulaması kolaydır. Ve bir dizi ek süre sıralamanız gerekecek. Çoğu durumda daha büyük dizileri sıralamak için kullanılmaz. Ekleme türü tekniği, sağlanan tabloda sıralanmış alt parçaları tutar. Sıralama işleminin başlangıcında, sıralama alt bölümü yalnızca ilk öğeyi içerir. Sıralı alt dizide, sıralanmamış diziden bir eleman seçip doğru yere yerleştiriyoruz. Zaman karmaşıklığı O (n2) ve uzay karmaşıklığı O (1).

def insertion_sort(arr, n):
	for i in range(1, n):
		current_position = i
		current_element = arr[i]
		while current_position > 0 and current_element <
		 arr[current_position - 1]:

			arr[current_position] = arr[current_position - 1]
			current_position -= 1
		arr[current_position] = current_element
if __name__ == '__main__':
	arr = [2, 3, 6, 7, 8, 9, 1, 4, 5]
	insertion_sort(arr, 9)
	print(str(arr))

Seçim sıralaması, küçük bir değişiklikle yapılan ekleme gibidir. Diziyi sınıflandırılmış ve sıralanmamış bileşenlere de ayırır. Ardından, sıralanmamış alt bölümden her yinelemeden en az öğeyi seçer ve onu sıralanmış alt bölümün son konumuna yerleştiririz. Zaman karmaşıklığı O(n2) ve uzay karmaşıklığı O (1)'dir.

def selection_sort(arr, n):
	for i in range(n):
		min_element_index = i
		for j in range(i + 1, n):
			if arr[j] < arr[min_element_index]:
				min_element_index = j
		arr[i], arr[min_element_index] = arr[min_element_index], arr[i]
if __name__ == '__main__':
	arr = [2, 3, 6, 7, 8, 9, 1, 4, 5]
	selection_sort(arr, 9)
	print(str(arr))

Baloncukları sırala, basit bir algoritmadır. İlgili dizi sıralanana kadar her yinelemede yakındaki girdileri sürekli olarak değiştirir. Panelden geçer ve mevcut elemanı bir sonrakinden daha düşük olana kadar bir sonraki yere iter. Zaman karmaşıklığı O(n2) ve uzay karmaşıklığı O (1)'dir.

def bubble_sort(arr, n):
	for i in range(n):
		for j in range(n - i - 1):
			if arr[j] > arr[j + 1]:
				arr[j], arr[j + 1] = arr[j + 1], arr[j]
if __name__ == '__main__':
	arr = [2, 3, 6, 7, 8, 9, 1, 4, 5]
	bubble_sort(arr, 9)
	print(str(arr))

Merge sort, özyinelemeli bir dizi sıralama algoritmasıdır. Zaman karmaşıklığı açısından, daha önce sunulan algoritmalardan daha verimlidir. Bölünme ve fetih yaklaşımını takip eder. Birleştirme sıralama algoritması, diziyi parçalara ayırır ve ayrı ayrı iki bölüme ayırır. Ayırdıktan sonra iki yarıyı tek bir sıralı dizide birleştirir. Dizi en kolay sıralama haline gelene kadar diziyi böler. Çünkü bu özyinelemeli bir algoritmadır. Zaman karmaşıklığı O(nlogn) ve uzay karmaşıklığı O(1)'dir.

def merge(arr, left_index, mid_index, right_index):
	left_array = arr[left_index:mid_index+1]
	right_array = arr[mid_index+1:right_index+1]
	left_array_length = mid_index - left_index + 1
	right_array_length = right_index - mid_index
	i = j = 0
	k = left_index
	while i < left_array_length and j < right_array_length:
		if left_array[i] < right_array[j]:
			arr[k] = left_array[i]
			i += 1
		else:
			arr[k] = right_array[j]
			j += 1
		k += 1
	while i < left_array_length:
		arr[k] = left_array[i]
		i += 1
		k += 1
	while j < right_array_length:
		j += 1
		k += 1
def merge_sort(arr, left_index, right_index):
	if left_index >= right_index:
		return
	mid_index = (left_index + right_index) 
	merge_sort(arr, left_index, mid_index)
	merge_sort(arr, mid_index + 1, right_index)
	merge(arr, left_index, mid_index, right_index)
if __name__ == '__main__':
	arr = [2, 3, 6, 7, 8, 9, 1, 4, 5]
	merge_sort(arr, 0, 8)
	print(str(arr))

Suggested posts

Alan Adları Hakkında Bilgi Bulma

Brian P. Hogan'ın Küçük, Keskin Yazılım Araçları'ndan bir alıntı

Alan Adları Hakkında Bilgi Bulma

facebook.com'a bir talepte bulunduğunuzda, bilgisayarınız o bağlantıyı kurabilmesi için bu alan adını bir IP adresine çevirmek üzere alan adını arar.

Langchain kullanarak ChatGPT eklentilerini ücretsiz çalıştırma

Langchain kullanarak ChatGPT eklentilerini ücretsiz çalıştırma

Tarayıcı, Kod Tercüman vb. tüm yeni güçlü ChatGPT eklentilerini duymuş olmalısınız. Ancak bir sorun var, eklentilere erişim bir bekleme listesiyle sınırlıdır ve bu nedenle birçoğunun buna erişimi yoktur.

Related posts

Bir Çocuğun İlk Kafasını Yükseltme Kitabı

Bir Çocuğun İlk Kafasını Yükseltme Kitabı

(Uyarı- Bu Hiciv, Neşeyle Yıkıcı Olma Amaçlıdır- Kesinlikle çocuklar için değildir) Annenizi ve babanızı mutfakta saklanıp o kokulu sigaraları içerken gördünüz. Sana söylerler.

Yavaş Erozyon: İnsanların Kariyerlerinde Boşa Harcadıkları Yolları Ortaya Çıkarma

Yavaş Erozyon: İnsanların Kariyerlerinde Boşa Harcadıkları Yolları Ortaya Çıkarma

Günümüzün hızlı tempolu ve rekabetçi dünyasında, kişinin kariyeri kişisel gelişim, finansal istikrar ve genel yaşam memnuniyetinde önemli bir rol oynamaktadır. Bununla birlikte, birçok kişi profesyonel yaşamlarında giderek tükenmekte olan amansız bir durgunluk ve tatminsizlik döngüsüne kapılmış durumda.

Kızıl Saçlı Kızın Solo Performansı

Hayden'ın görevi üzerine Katie kendini mastürbasyon yaparken filme alır.

Kızıl Saçlı Kızın Solo Performansı

Hayden, birlikte geçirdikleri akşamdan sonra Katie'yi üniversite yurduna geri götürdüğünde gece yarısını geçmişti. Sabah erkenden dersi vardı ve önceki gece onunla kaldıktan sonra bir daha kıyafet değiştirmedi.

Bir podcast'i etkili kılan nedir?

Bir podcast'i etkili kılan nedir?

Geçen hafta PressGazette (İngiliz medya haber sitesi) aracılığıyla gönderilen bir basın bildirisi fark ettim. Makale, Scandi podcast barındırma ve reklamcılık şirketi Acast'ın podcasting alanında "muhtemelen en etkili" yayıncılardan oluşan bir konsorsiyuma liderlik edeceğini duyurdu.