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