-
Notifications
You must be signed in to change notification settings - Fork 0
/
8_7_uygulama.c
58 lines (56 loc) · 1.5 KB
/
8_7_uygulama.c
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
/**<
*8_7_uygulama.c
*Bu program C dilinde: Quick Sort (Hızlı sıralaması) algoritması kullanarak dizi elemanlarını
küçükten büyüğe sıralıyan fonksiyonun yazılasını içerir.
*@authr Neşet Aydın
*09.03.2021
*Bu Program uygulama 8.7 için yazılan programın son halidir.
*Videoya linkten ulaşabilirsiniz: https://youtu.be/S8CKBEY3nsg
*/
#include <stdio.h>
#include <stdlib.h>
void hizliSiralama(int dizi[],int sol,int sag);
void rastgeleDegerler(int dizi[],int boyut);
void bastir(int dizi[],int boyut);
void degistir(int * d1, int *d2);
int main()
{
int dizi[10];
int diziBoyut=(sizeof(dizi)/sizeof(int));
printf("%d\n",diziBoyut);
rastgeleDegerler(dizi,diziBoyut);
bastir(dizi,diziBoyut);
hizliSiralama(dizi,0,diziBoyut-1);
bastir(dizi,diziBoyut);
return 0;
}
void rastgeleDegerler(int dizi[],int boyut){
for(int s=0;s<boyut;s++)dizi[s]=(rand()%150);
}
void bastir(int dizi[],int boyut){
for(int s=0;s<boyut;s++)printf("%d\t",dizi[s]);
printf("\n");
}
void hizliSiralama(int dizi[],int sol,int sag){
int x,y,pivot;
x=sol;
y=sag;
pivot=dizi[(x+y)/2];
// pivot=(int)((x+y)/2);
while(x<=y){
while(dizi[x]<pivot && x<sag)x++;
while(dizi[y]>pivot && y>sol)y--;
if(x<=y){
degistir(&dizi[x],&dizi[y]);
x++; y--;
}
}
if(sol<y)hizliSiralama(dizi,sol,y);
if(x<sag)hizliSiralama(dizi,x,sag);
}
void degistir(int * d1, int *d2){
int degisken;
degisken=*d1;
*d1=*d2;
*d2=degisken;
}