C Programlama Algoritmalar Arası Hız Karşılaştırma

Categories CPosted on

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 !

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

This site uses Akismet to reduce spam. Learn how your comment data is processed.