C Programlama dilinde bir çok sıralama algoritması bulunmaktadır. Bunlardan bazıları Selection Sort, Bubble Sort, İnsertion Sort, Quick Sort.
C Sıralama algoritmaları ne kadar hızlı ? C Sıralama algoritmaları
Sıralama algoritmaları belirtilen sayıları sıralarken belirli bir zaman aralığında sıralar. Her algoritmanın kendine göre avantajları ve dezavantajları bulunmaktadır. Peki C programlama dilinde hangi sıralama algoritması daha hızlıdır? Aşağıda yer alan kodda diziye 10000 eleman eklenmiş ve time kütüphanesi kullanılarak geçen zaman hesaplanmıştır.
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <ctime>
void selectionSort (int dizi[], int toplamelemansayisi)
{
int i, j, enkucukeleman, temp,a;
clock_t t1, t2;
t1 = clock(); // sayaç başlangıcımız
for (i=0; i<toplamelemansayisi-1; i++)
{
enkucukeleman = i;
for (j=i+1; j<toplamelemansayisi; j++)
{
if (dizi[j] < dizi [enkucukeleman])
enkucukeleman = j;
}
temp = dizi[i];
dizi[i] = dizi[enkucukeleman];
dizi[enkucukeleman] = temp;
}
t2 = clock(); // sayaç bitimi
float diff = ((float)(t2 - t1) / 1000000.0F ) * 1000;
printf("\n Selection Sort Siralamasi, Siralama Aninda Toplam Gecen zaman >> %f saniye \n",diff);
}
void BubbleSort(int dizi[], int toplamelemansayisi)
{
int temp;
int i, j;
clock_t t1, t2;
t1 = clock(); // sayaç başlangıcımız
for (i=1; i<toplamelemansayisi; i++)
{
for (j=0; j<toplamelemansayisi-i; j++)
{
if(dizi[j] > dizi[j+1])
{
temp = dizi [j];
dizi [j] = dizi [j+1];
dizi [j+1] = temp;
}
}
}
t2 = clock(); // sayaç bitimi
float diff = ((float)(t2 - t1) / 1000000.0F ) * 1000;
printf("\n Bubble Sort Siralamasi, Siralama Aninda Toplam Gecen zaman >> %f saniye \n",diff);
}
int quickSort(int arr[], int left, int right)
{
clock_t t1, t2;
float diff;
int i = left, j = right;
int tmp;
t1 = clock(); // sayaç başlangıcımız
int pivot = arr[(left + right) / 2];
while (i <= j) {
while (arr[i] < pivot)
i++;
while (arr[j] > pivot)
j--;
if (i <= j) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j--;
}
};
if (left < j)
quickSort(arr, left, j);
if (i < right)
quickSort(arr, i, right);
t2 = clock(); // sayaç bitimi
diff = ((float)(t2 - t1) / 1000000.0F ) * 1000;
return diff;
}
void insertionSort(int dizi[],int toplamelemansayisi)
{
clock_t t1, t2;
int i=0,j,temp,min;
t1 = clock(); // sayaç başlangıcımız
for(i=0;i<toplamelemansayisi;i++)
{
for(j=0;j<toplamelemansayisi;j++)
{
if(dizi[j]>dizi[i])
{
temp=dizi[i];
dizi[i]=dizi[j];
dizi[j]=temp;
}
}
}
t2 = clock(); // sayaç bitimi
float diff = ((float)(t2 - t1) / 1000000.0F ) * 1000;
printf("\n insertion Sort Siralamasi, Siralama Aninda Toplam Gecen zaman >> %f saniye \n",diff);
}
int main(int argc, char** argv) {
int dizi[10000],a;
for(int i =1;i<10001;i++)
{
dizi[i]=rand()%1000;
}
selectionSort (dizi,10000);
BubbleSort(dizi,10000);
insertionSort(dizi,10000);
a=quickSort(dizi,0,9999);printf("\n Quick Sort Siralamasi, Siralama Aninda Toplam Gecen zaman >> %f saniye \n",a);
return 0;
}
Yukarıda kodda Selection Sort,Bubble Sort, İnsertion Sort, Quick Sort sıralama algoritmaları kaç saniyede sıralama yapar, hangisi daha hızlıdır sorularına cevap bulabilirsiniz.
UYARI : Kodda hata veya mantık hatası bulunabilir !

