Perşembe Kasım 7th, 2019

Seçerek Sıralama (Selection Sort)

ile Ebubekir Sezer

Merhabalar, Seçerek sıralama algoritması ile array içerisinde küçükten büyüğe veya büyükten küçüğe sıralama yapabilirsiniz. Algoritmanın çalışma mantığı, Array içerisinde bulunan ilk elemana minimum diyoruz ve daha sonra array içerisinde for döngüsünü kullanarak eğer seçtiğimiz sayıdan küçük bir sayı varsa bu sefer onu minimum değişkenimize atıyoruz. Algoritma gayet basit. Algoritmaların karmaşıklığına göre sıralamaları oluyor, Seçerek sıralamanın karmaşıklığını n2 ile hesaplıyoruz. Bu algoritmayı örnek olması açısından hem C programlama dile hemde Python programlama dili ile yazdım. Örneklerde sadece küçükten büyüğe değil büyükten küçüğe de sıralıyorum.

C kodu;

#include<stdio.h>

void selectionSort(int array[],int size){
	int min;
	
	for(int i =0;i<size-1;i++){
		min = i;
		
		for(int j = i;j<size;j++){
			if(array[j]<array[min]){
				min = j;
			}
		}
		int temp = array[i];
		array[i] = array[min];
		array[min] = temp;
	}
}

void maxToMin(int array[],int size){
	int max;
	
	for(int i=0;i<size;i++){
		max  = i;
		for(int j=i;j<size;j++){
			if(array[j]>array[max]){
				max= j;
			}
		}
		int temp = array[i];
		array[i] = array[max];
		array[max] = temp;
	}
}

int main(){
	int array[] = {1,3,6,5,7,8,2,4};
	int n = sizeof(array)/sizeof(array[0]);
	selectionSort(array,n);
	for(int i =0;i<n;i++){
		printf("%d ",array[i]);
	}
	printf("\n");
	maxToMin(array,n);
	for(int i =0;i<n;i++){
		printf("%d ",array[i]);
	}
}

Python Kodu;

array = [1,3,6,5,7,8,2,4]

for i in range(len(array)):
    min = i
    for j in range(i+1,len(array)):
        if array[min]>array[j]:
            min = j
    array[i],array[min] = array[min],array[i]

print("Selection Sort")
for i in range(len(array)):
    print("%d" %array[i])


for i in range(len(array)):
    max = i
    for j in range(i+1,len(array)):
        if array[j]>array[max]:
            max = j
    
    array[i],array[max] = array[max],array[i]

print("Max to Min")
for i in range(len(array)):
    print("%d " %array[i])

Soru ve görüşlerinizi e-mail veya yorum olarak belirtirseniz sevinirim.