- Mesajlar
- 506
Sağolsun arkadaşların ödevleri olmasa C'yi iyice unutucaz... Bu yazıda Insertion Sort ve Quick ( Hızlı) Sort algoritmalarına değineceğiz.
Bu algoritma ile elimizde bulunan integer türünden bir dizinin elemanlarını sıralayacağız. Bu algoritmayı iskambil kâğıtlarını sıralama mantığıyla benzetebiliriz. Sırayla dizinin tüm elemanlarını birbirleriyle karşılaştırarak sıralama yapıyoruz. Performans bakımından diğer algoritmalardan kötü olsa da bilmemizde fayda var.
Bu algoritmayı kullanmak için void türünden bir metot hazırlandı ve sıralanacak integer türünden dizi bu metoda parametre olarak veriyoruz.
Metot çalıştığında diziyi sıralanmış olarak elde ediyoruz. Insertion Sort algoritmasının C kodları ve kullanımı şu şekilde olacak:
Bu algoritma ile elimizde bulunan integer türünden bir dizinin elemanlarını sıralayacağız. Bu algoritmayı iskambil kâğıtlarını sıralama mantığıyla benzetebiliriz. Sırayla dizinin tüm elemanlarını birbirleriyle karşılaştırarak sıralama yapıyoruz. Performans bakımından diğer algoritmalardan kötü olsa da bilmemizde fayda var.
Bu algoritmayı kullanmak için void türünden bir metot hazırlandı ve sıralanacak integer türünden dizi bu metoda parametre olarak veriyoruz.
Metot çalıştığında diziyi sıralanmış olarak elde ediyoruz. Insertion Sort algoritmasının C kodları ve kullanımı şu şekilde olacak:
Kod:
#include <stdio.h>
#define A_SIZE 10
void bubble_sort(int *p, int size);
void print_array(int *p, int size);
int main(void)
{ int sayac;
int a[A_SIZE] = {4, 1, 7, 3, 6, -6, 8, 2, -56, 5};
print_array(a, A_SIZE);
bubble_sort(a, A_SIZE);
print_array(a, A_SIZE);
return 0;
}
/**************************************/
void bubble_sort(int *p, int size) /* Buble (Kabarcık)Sıralama algoritması*/
{
int i, j, temp, min;
for (i = 0; i < size - 1; i++)
for (j = 0; j < size - i - 1; j++)
if (p[j] > p[j + 1]) {
temp = p[j];
p[j] = p[j + 1];
p[j + 1] = temp;
sayac++;
}
}
/**************************************/
void print_array(int *p, int size)
{
int i;
for (i = 0; i < size; i++)
printf("%d ", p[i]);
printf("%d ", sayac); /*Algoritmanın gercekleştiriliceği işlem sayısı*/
putchar('\n');
}