OpenCores
URL https://opencores.org/ocsvn/hf-risc/hf-risc/trunk

Subversion Repositories hf-risc

[/] [hf-risc/] [trunk/] [software/] [app/] [sort.c] - Blame information for rev 13

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 13 serginhofr
#include <hf-risc.h>
2
 
3
#define ELEMENTS        128
4
 
5
int sort(int v[], int e){
6
        int i, j, k;
7
 
8
        for(i=0; i<e-1; i++){
9
                for(j=i+1; j<e; j++){
10
                        if (v[i] > v[j]){
11
                                k = v[i];
12
                                v[i] = v[j];
13
                                v[j] = k;
14
                        }
15
                }
16
        }
17
}
18
 
19
void swap(int v[], int i, int j){
20
        int temp;
21
 
22
        temp = v[i];
23
        v[i] = v[j];
24
        v[j] = temp;
25
}
26
 
27
void qsort(int v[], int left, int right){
28
        int i, last;
29
 
30
        if (left >= right)
31
                return;
32
        swap(v, left, (left + right) >> 1);
33
        last = left;
34
        for (i = left + 1; i <= right; i++)
35
                if (v[i] < v[left])
36
                        swap(v, ++last, i);
37
        swap(v, left, last);
38
        qsort(v, left, last-1);
39
        qsort(v, last+1, right);
40
}
41
 
42
int main(void){
43
        int v[ELEMENTS];
44
        int i,j;
45
        volatile unsigned int time;
46
 
47
        for(i=0; i<ELEMENTS; i++)
48
                v[i] = random();
49
 
50
        printf("\n\nrandom elements: ");
51
        for(i=0; i<ELEMENTS; i++)
52
                printf("%d ", v[i]);
53
 
54
        time = COUNTER;
55
        sort(v, ELEMENTS);
56
        time = COUNTER - time;
57
 
58
        printf("\n\nsorted elements (%d cycles): ", time);
59
        for(i=0; i<ELEMENTS; i++)
60
                printf("%d ", v[i]);
61
 
62
        for(i=0; i<ELEMENTS; i++)
63
                v[i] = random();
64
 
65
        printf("\n\nrandom elements: ");
66
        for(i=0; i<ELEMENTS; i++)
67
                printf("%d ", v[i]);
68
 
69
        time = COUNTER;
70
        qsort(v, 0, ELEMENTS-1);
71
        time = COUNTER - time;
72
 
73
        printf("\n\nsorted elements (%d cycles): ", time);
74
        for(i=0; i<ELEMENTS; i++)
75
                printf("%d ", v[i]);
76
}
77
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.