AÇIKLAMA
Sayılar dosyanın içine atılır ve programda dosya yolu girilir.
Ör:
C:\sayilar.txt
daha sonra isteğe bağlı olarak girilen K değeri ile en küçük K değerindeki sayı bulunur.
Dosya
10
9
8
5
4
2
olsun
K değerini 3 girerseniz Bu durumda en küçük 3.Sayı olan 5 değeri ve bulunma zamanı geri dondurulur.
Programın Tamamını Aşağıdaki Linkten İndirebilirsiniz.
Program Kodu:
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "string.h" #include "stdio.h" #include "conio.h" #include "stdlib.h" #include "iostream.h" #include "time.h" void hizli_sirala(int dizi[], int sol, int sag); //--------------------------------------------------------------------------- #pragma argsused int main(int argc, char* argv[]) { clock_t bir,iki,fark; FILE *f; int sayilar[100000]; for(int y=0;y<100000;y++) { sayilar[y]=0; } char satir[10]; char *sayimiz; string yol; int sira; int sayi,sag,sol,orta; int index=0; string mesaj="Dosya Yolunu Giriniz:\n"; cout<<mesaj; cin>>yol; bir=clock(); cout<<"Dosya Açılamadı."; else { { sayi=atoi(sayimiz); sayilar[index]=sayi; index++; } hizli_sirala(sayilar,0,index-1); } iki=clock(); fark=(iki-bir)/CLK_TCK; cout<<"Dosyadan Okuma Ve Siralama Suresi "<<fark<<" sn'dir"<<"\n"; while(true) { mesaj="K'nin degerini Giriniz:\n"; cout<<mesaj; cin>>sira; bir=clock(); if((sira>index)||(sira==0)) { cout<<"HATA Dizinde Boyle Bir Sayi Yoktur\n"; } else if(sira==-1) { cout<<"Gule Gule :)"; getche(); break; } else { iki=clock(); fark=(iki-bir)/CLK_TCK; cout<<"EN KUCUK "<<sira<<". SAYI "<<sayilar[sira-1]<<"-> Bu Sayiyi Bulmak Icin Gecen Zaman "<<fark<<" sn'dir"<<"\n"; } } return 0; } //--------------------------------------------------------------------------- void hizli_sirala(int dizi[], int sol, int sag) { register int k, j; int ortadaki, gecici; k = sol; j = sag; ortadaki = dizi[(sol+sag)/2]; do { while(dizi[k] < ortadaki && k < sag) k++; while(ortadaki < dizi[j] && j > sol) j--; if(k <= j) { gecici = dizi[k]; dizi[k] = dizi[j]; dizi[j] = gecici; k++; j--; }// if } while(k <= j); //do if(sol < j) hizli_sirala(dizi,sol,j); if(k < sag) hizli_sirala(dizi,k,sag); } //---------------------------------------------------------------------------
| Yorumlar |
|
Powered by !JoomlaComment 3.26
