-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathselection.c
More file actions
129 lines (82 loc) · 2.39 KB
/
Copy pathselection.c
File metadata and controls
129 lines (82 loc) · 2.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
enum Tur { sirali = 1, ters_sirali = 2, rastgele = 3 };
// Dizi boyutu global.
int boyut = 100000;
// Ters sıralı dizi olacak.
enum Tur tur = ters_sirali;
/**
* Adresi verilen dizinin elemanlarını ekrana bas.
* @param pointer dizi
* @return void
*/
void diziYaz(int * dizi){
int l;
for( l = 0; l < boyut; l++){
printf("%d,", dizi[l]);
}
}
/**
* Belirtilen boyut ve türde dizi oluştur ve adresini döndür.
* @param int boyut
* @param enum Tur tip
* @return pointer
*/
int * diziOlustur(int boyut, enum Tur tip){
int *dizi;
int i;
dizi = (int *) malloc( sizeof(int) * boyut );
if(tip == 1){
for( i=0; i < boyut; i++ ){
dizi[i] = i;
}
}else if(tip == 2){
for( i=0; i < boyut; i++ ){
dizi[i] = boyut -i -1;
}
}else{
srand(time(NULL)); // rastgele sayı üretmek için besleme.
for(i=0; i < boyut; i++ ){
dizi[i] = (rand() % boyut);
}
}
return dizi;
}
int main(){
int * dizi = diziOlustur(boyut, tur);
int i, j, minimum, gecici;
unsigned long long int adim_degisim, adim_karsilastirma, toplam_degisim=0, toplam_karsilastirma = 0;
time_t baslangic, bitis;
double toplam_sure;
//printf("Baslayalim, dizinin hali:\n");
//diziYaz(dizi);
printf("\n----------------\n");
time(&baslangic);
for (i = 0; i < boyut-1; i++) {
minimum = i;
adim_degisim = 0;
adim_karsilastirma = 0;
for (j = i + 1; j < boyut; j++) {
if (dizi[j] < dizi[minimum]) {
minimum = j;
}
adim_karsilastirma++;
toplam_karsilastirma++;
}
if(minimum != i){
gecici = dizi[i];
dizi[i] = dizi[minimum];
dizi[minimum] = gecici;
adim_degisim++;
toplam_degisim++;
}
//printf("%d. adim | %llu karsilastirma | %llu yer degistirme\n", i + 1, adim_karsilastirma, adim_degisim);
}
time(&bitis);
toplam_sure = difftime(bitis, baslangic);
printf("----------------\n%d elemanli dizi %d adimda %llu karsilastirma ve %llu degistirme ile siralandi, %.2f saniye surdu.\n----------------\n",
boyut, i+1, toplam_karsilastirma, toplam_degisim, toplam_sure);
//diziYaz(dizi);
return 0;
}