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 !