Skip to content

Commit 05a1708

Browse files
Optimized for both performance and memory gains
1 parent 3b7a491 commit 05a1708

File tree

2 files changed

+105
-85
lines changed

2 files changed

+105
-85
lines changed

FileHandling.h

+30-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include <stdio.h>
22
#include <stdlib.h>
33
#include <math.h>
4+
#include <string.h>
45

56
// n = rows
67
// dim = columns
@@ -10,11 +11,12 @@
1011
int getColumns(FILE*);
1112
int getRows(FILE*);
1213

13-
double **getData(FILE*,int ,int ,double **);
14+
float *getData(FILE*,int ,int ,float *);
1415
void writeFile(FILE*,int,int,double **);
1516
double **transformPositive(int,int,double **);
1617
void qS(double *,int ,int);
1718
int partition(double *,int ,int);
19+
void qSort(float *,int);
1820

1921

2022

@@ -148,20 +150,43 @@ int getColumns(FILE* Dataset)
148150

149151
return dim;
150152
}
151-
double **getData(FILE* Dataset,int n,int dim,double **X)
153+
float *getData(FILE* Dataset,int n,int dim,float *X)
152154
{
153155
int i;
154156
int d;
155157
while(!feof(Dataset))
156-
for (i = 0; i < n; i++)
158+
for (i = n; i--;)
157159
{
158-
for (d = 0; d < dim; d++)
160+
for (d = dim; d--;)
159161
{
160-
fscanf(Dataset, "%lf,", &X[i][d]);
162+
fscanf(Dataset, "%f", &X[i*dim + d]);
161163
}
162164
}
163165

164166
return X;
165167

166168

167169
}
170+
171+
172+
173+
void qSort(float *arr, int elements) {
174+
175+
#define MAX_LEVELS 300
176+
177+
float piv, beg[MAX_LEVELS], end[MAX_LEVELS], swap ;
178+
int i=0, L, R;
179+
beg[0]=0; end[0]=elements;
180+
while (i>=0) {
181+
L=beg[i]; R=end[i]-1;
182+
if (L<R) {
183+
piv=arr[L];
184+
while (L<R) {
185+
while (arr[R]>=piv && L<R) R--; if (L<R) arr[L++]=arr[R];
186+
while (arr[L]<=piv && L<R) L++; if (L<R) arr[R--]=arr[L]; }
187+
arr[L]=piv; beg[i+1]=L+1; end[i+1]=end[i]; end[i++]=L;
188+
if (end[i]-beg[i]>end[i-1]-beg[i-1]) {
189+
swap=beg[i]; beg[i]=beg[i-1]; beg[i-1]=swap;
190+
swap=end[i]; end[i]=end[i-1]; end[i-1]=swap; }}
191+
else {
192+
i--; }}}

0 commit comments

Comments
 (0)