Arkanjo 0.1
A tool for find code duplicated functions in codebases
Loading...
Searching...
No Matches
code.c
Go to the documentation of this file.
1#include <stdio.h>
2#include <stdlib.h>
3
4//the function below will compute the vector permutation p
5//which returns a list of the index of elements sorted by distance of median
6//I do not care about ties.
7
8
10
11 int *v_sorted = (int*)malloc(n*sizeof(int));
12 int *dist_to_median = (int*)malloc(n*sizeof(int));
13 int *p = (int*)malloc(n*sizeof(int));
14 int median;
15
16 for(int i = 0; i < n; i++){
17 v_sorted[i] = i;
18 }
19
20 for(int i = 0; i < n; i++){
21 for(int j = 0; j < n-1; j++){
22 if(v[v_sorted[j]] > v[v_sorted[j+1]]){
23 int aux = v_sorted[j];
24 v_sorted[j] = v_sorted[j+1];
25 v_sorted[j+1] = aux;
26 }
27 }
28 }
29
30 median = v[v_sorted[n/2]];
31
32 for(int i = 0; i < n; i++){
33 dist_to_median[i] = v[i]-median;
34 if(dist_to_median[i] < 0){
35 dist_to_median[i] *= -1;
36 }
37 }
38
39 for(int i = 0; i < n; i++){
40 p[i] = i;
41 }
42
43 for(int i = 0; i < n; i++){
44 for(int j = 0; j < n-1; j++){
45 if(dist_to_median[p[j]] > dist_to_median[p[j+1]]){
46 int aux = p[j];
47 p[j] = p[j+1];
48 p[j+1] = aux;
49 }
50 }
51 }
52
55 return p;
56}
57
58int main(int argc, char *argv[]){
59
60 int v[6];
61 v[0] = 5;
62 v[1] = 3;
63 v[2] = 4;
64 v[3] = 1;
65 v[4] = 2;
66 v[5] = 1;
67 int n = 6;
68
70
71 for(int i = 0; i < n; i++){
72 printf("%d ",p[i]);
73 }
74 printf("\n");
75
76 free(p);
77 return 0;
78}
free(p)
printf("\n")
int n
Definition main.c:10
v[0]
Definition main.c:4
int * p
Definition main.c:12
int * dist_to_median
return v_sorted
int main(int argc, char *argv[])
Definition code.c:40
int * sorted_by_distance_to_median(int v[], int n)
Definition code.c:9