Skip to content

Commit e5e0a1d

Browse files
committed
FirstCommit
It will be revised and corrected.
1 parent 40b8b50 commit e5e0a1d

10 files changed

+200471
-0
lines changed

Code/100000likliste.txt

Lines changed: 100000 additions & 0 deletions
Large diffs are not rendered by default.

Code/100lükliste.txt

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
823.747
2+
270.162
3+
595.155
4+
920.236
5+
388.221
6+
788.321
7+
427.508
8+
728.398
9+
577.333
10+
964.13
11+
135.015
12+
366.154
13+
36.851
14+
495.389
15+
258.723
16+
672.369
17+
779.194
18+
855.37
19+
421.727
20+
833.644
21+
574.449
22+
534.569
23+
408.168
24+
233.154
25+
337.428
26+
915.815
27+
29.632
28+
280.406
29+
606.213
30+
695.87
31+
698.917
32+
327.064
33+
542.224
34+
572.384
35+
104.972
36+
655.856
37+
633.343
38+
988.084
39+
267.818
40+
125.31
41+
482.519
42+
639.12
43+
484.025
44+
344.736
45+
67.545
46+
897.199
47+
21.105
48+
427.715
49+
415.782
50+
119.798
51+
243
52+
606
53+
557
54+
133
55+
378
56+
937
57+
618
58+
485
59+
640
60+
594
61+
67
62+
620
63+
13
64+
930
65+
857
66+
480
67+
265
68+
564
69+
239
70+
196
71+
734
72+
481
73+
553
74+
856
75+
562
76+
487
77+
406
78+
654
79+
881
80+
154
81+
237
82+
650
83+
155
84+
888
85+
948
86+
535
87+
399
88+
759
89+
15
90+
687
91+
795
92+
65
93+
163
94+
776
95+
980
96+
605
97+
43
98+
308
99+
798
100+
31

Code/10lukliste.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
91.679
2+
47.931
3+
58.504
4+
60.954
5+
90.973
6+
30
7+
75
8+
69
9+
16
10+
47

Code/Algoritma_Analizi_1.dev

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
[Project]
2+
FileName=Algoritma_Analizi_1.dev
3+
Name=Algoritma_Analizi_1
4+
Type=1
5+
Ver=2
6+
ObjFiles=
7+
Includes=
8+
Libs=
9+
PrivateResource=
10+
ResourceIncludes=
11+
MakeIncludes=
12+
Compiler=
13+
CppCompiler=
14+
Linker=
15+
IsCpp=0
16+
Icon=
17+
ExeOutput=
18+
ObjectOutput=
19+
LogOutput=
20+
LogOutputEnabled=0
21+
OverrideOutput=0
22+
OverrideOutputName=
23+
HostApplication=
24+
UseCustomMakefile=0
25+
CustomMakefile=
26+
CommandLine=
27+
Folders=
28+
IncludeVersionInfo=0
29+
SupportXPThemes=0
30+
CompilerSet=0
31+
CompilerSettings=0000000000000000000000000
32+
UnitCount=1
33+
34+
[VersionInfo]
35+
Major=1
36+
Minor=0
37+
Release=0
38+
Build=0
39+
LanguageID=1033
40+
CharsetID=1252
41+
CompanyName=
42+
FileVersion=
43+
FileDescription=Developed using the Dev-C++ IDE
44+
InternalName=
45+
LegalCopyright=
46+
LegalTrademarks=
47+
OriginalFilename=
48+
ProductName=
49+
ProductVersion=
50+
AutoIncBuildNr=0
51+
SyncProduct=1
52+
53+
[Unit1]
54+
FileName=main.c
55+
CompileCpp=0
56+
Folder=
57+
Compile=1
58+
Link=1
59+
Priority=1000
60+
OverrideBuildCmd=0
61+
BuildCmd=
62+

Code/Algoritma_Analizi_1.layout

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
[Editors]
2+
Order=0
3+
Focused=0
4+
[Editor_0]
5+
CursorCol=1
6+
CursorRow=1
7+
TopLine=1
8+
LeftChar=1

Code/main.c

Lines changed: 181 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,181 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
#include <time.h>
4+
5+
//Global Degiskenler
6+
int counter=0, i=0; //Genel Sayac - Tekrardan Kacinmak Icin Kullaniyoruz
7+
double temp; //Geçici Degiskenler
8+
9+
/* Menu Fonksiyonu
10+
Bu fonksiyonun amaci kullaniciya islem yapmak istedigi dosyayi sectirmek. Ve dosya ismini proje geneline hazir hale getirerek, islemleri hazirlamak.
11+
Ornegin 1 girildigin 10 adet degere sahip liste isleme alinacaktir.
12+
*/
13+
char* menu()
14+
{
15+
int choise=0;
16+
char *fileName;
17+
18+
printf("***************************************** MENU *****************************************\n\n");
19+
printf("Select the File You Want Sorted. (Please enter the line number. Simple; 1)\n");
20+
printf("Note: Your choise and start the time!\n\n");
21+
printf("1-10.txt\n2-100.txt\n3-100.000.txt\nSelect:");
22+
scanf("%d",&choise);
23+
24+
25+
switch(choise)
26+
{
27+
case 1: fileName="10lukliste.txt"; return fileName; break;
28+
case 2: fileName="100lükliste.txt"; return fileName; break;
29+
case 3: fileName="100000likliste.txt"; return fileName; break;
30+
default:
31+
system("cls"); //Console Ekrani Temizleme
32+
printf("*************************** Incorrect Entry! Please Try Again. ***************************\n\n");
33+
menu();
34+
}
35+
36+
}
37+
38+
39+
/* readFileItemSize Fonksiyonu
40+
Dosya icerisindeki deger sayisini saydirarak geriye int deger donduruyoruz. Amacimiz tanimlayacagimiz dizi için buyukluk belirlemek.
41+
*/
42+
int readFileItemSize(char* fileName)
43+
{
44+
FILE *filePointer; //Dosyayi gosteren pointer tanimliyoruz. Bu sayede dosya uzerinde acma/kapatma vb. islemler icin adres gosterebilecegiz.
45+
46+
if((filePointer=fopen(fileName,"r"))==NULL) //Burada tanimli olan fileName parametresini fileNameOperation methodu icerisinden aliyoruz.
47+
{
48+
printf("The File Could Not Be Opened Or Not Found File");
49+
exit(1);
50+
}
51+
while(fscanf(filePointer, "%lf",&temp) != EOF) //EOF liste sonuna geldiginde 0 harici bir deger doner. Dosya sonuna kadar kontrol bu sekilde sagliyoruz. Farkli dosyalar icin yazilimin genisletilbilecegini varsayiyoruz.
52+
counter++;
53+
54+
fclose(filePointer);
55+
return counter;
56+
}
57+
58+
59+
/* fileItemGetArray Fonksiyonu
60+
readFileItemSize fonksiyonu icerisinde aldigimiz dizi buyuklugune gore olusturan dizi icerisine txt dosyalari icerisinde yer alan degerleri tip donusumu yaparak int degisken olarak atiyoruz.
61+
*/
62+
void fileItemGetArray(int fileArray[], char *fileName)
63+
{
64+
FILE *filePointer;
65+
filePointer=fopen(fileName,"r");
66+
67+
counter = 0;
68+
while(fscanf(filePointer, "%lf",&temp) != EOF)
69+
{
70+
fileArray[counter]=(int)(temp * 1000); //Tip Donusumu
71+
counter++;
72+
}
73+
74+
fclose(filePointer);
75+
}
76+
77+
78+
/* radixSort Fonksiyonu
79+
Maksimum degeri bularak basamak sayisa gore for dongusu donduruyoruz. Her basamagin elemanina bakabiliyoruz.
80+
Bu dongu icerisinde de "counting sort" algortimasi ise sayimlari gerceklestiriyoruz.
81+
*/
82+
void radixsort(int fileArray[], int itemNum)
83+
{
84+
int maxValue = findMaxValue(fileArray, itemNum);
85+
86+
int digit = 0;
87+
for (digit = 1; maxValue / digit > 0; digit *= 10)
88+
countSort(fileArray, itemNum, digit);
89+
}
90+
91+
92+
//Maksimum değer bulma -> Kaç basamak ile ugrasicagimizzi bilmemiz icin gerekli.
93+
int findMaxValue(int fileArray[], int fileItem)
94+
{
95+
int maxValue = fileArray[0];
96+
for (i = 1; i < fileItem; i++)
97+
if (fileArray[i] > maxValue)
98+
maxValue = fileArray[i];
99+
return maxValue;
100+
}
101+
102+
/* countSourt Fonksiyonu
103+
Digitlere gore sirali olarak bir sayac tutuyoruz. Daha sonra bu sayac degerlerini indis sirasiyla toplayarak hazirliyoruz.
104+
Bunun sonucunda olusan count aarray yardimiyla siralama islemi yaparak parametre olarak aldigimiz gercek array ile degistiyoruz.
105+
- Digit de buldugumuz her sayiyi count dizisi yardimiyla arttiriyor. Hangi sayidan kaç adet var?
106+
- Daha sonra bulunan dizide sirali olarak toplayarak indisleri dolasiyoruz.
107+
- Son olarak diziyi siraliyorak diziye yaziyoruz.
108+
- Siralanmis diziyi parametre olarak verdigimiz dizinin uzerine yaziyoruz.
109+
*/
110+
void countSort(int fileArray[], int itemNum, int digit)
111+
{
112+
int output[itemNum];
113+
int i, count[10] = { 0 };
114+
115+
for (i = 0; i < itemNum; i++)
116+
count[(fileArray[i] / digit) % 10]++;
117+
118+
for (i = 1; i < 10; i++)
119+
count[i] += count[i - 1];
120+
121+
for (i = itemNum - 1; i >= 0; i--)
122+
{
123+
output[count[(fileArray[i] / digit) % 10] - 1] = fileArray[i];
124+
count[(fileArray[i] / digit) % 10]--;
125+
}
126+
127+
for (i = 0; i < itemNum; i++)
128+
fileArray[i] = output[i];
129+
}
130+
131+
132+
void printList(int fileArray[], int itemNum)
133+
{
134+
printf("\n");
135+
for(i=0;i<itemNum;i++)
136+
{
137+
double temp2 = (double)fileArray[i];
138+
double temp = (double)(temp2/1000);
139+
printf("%lf\n",temp);
140+
}
141+
142+
}
143+
144+
145+
//Milisaniye olarak dosya secim isleminden sonra milisaniyeyi hesapliyoruz.
146+
void timeCalculate(clock_t start, clock_t end, clock_t fileReadEnd, clock_t radixSortTime)
147+
{
148+
printf("\n\nFile Read CPU Time(MiliSecond): %lf\n",(double)(fileReadEnd-start));
149+
printf("Radix Sort Time CPU (MiliSecond): %lf\n",(double)(radixSortTime-fileReadEnd));
150+
printf("Sort List Print Time(MiliSecond): %lf\n",(double)(end-radixSortTime));
151+
printf("File Choise After Operation CPU Time(MiliSecond): %lf\n",(double)(end-start));
152+
153+
}
154+
155+
156+
157+
int main(int argc, char *argv[])
158+
{
159+
clock_t fileReadEnd, radixSortTime, start, end;
160+
161+
//Dosyadan okuma ve dizi islemleri
162+
char *fileName = menu();
163+
164+
start = clock();
165+
166+
int itemNum = readFileItemSize(fileName);
167+
int fileArray[itemNum];
168+
fileItemGetArray(fileArray,fileName);
169+
170+
fileReadEnd = clock();
171+
172+
//Radix Sort Ile Siralama Ve Yazdirma
173+
radixsort(fileArray, itemNum);
174+
175+
radixSortTime = clock();
176+
177+
printList(fileArray, itemNum);
178+
end = clock();
179+
timeCalculate(start,end,fileReadEnd,radixSortTime);
180+
return 0;
181+
}

0 commit comments

Comments
 (0)