Arkanjo 0.1
A tool for find code duplicated functions in codebases
Loading...
Searching...
No Matches
test_same_file_similar_functions.c
Go to the documentation of this file.
1#include <stdio.h>
2#include <stdlib.h>
3
4//the two functions 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
59
60 int median;
61 int *p = (int*)malloc(n*sizeof(int));
62 int *v_sorted= (int*)malloc(n*sizeof(int));
63 int *dist_to_median = (int*)malloc(n*sizeof(int));
64
65
66 for(int i = 0; i < n; i++){
67 v_sorted[i] = i;
68 }
69
70 for(int i = 0; i < n; i++){
71 for(int j = 0; j < n-1; j++){
72 if(v[v_sorted[j]] > v[v_sorted[j+1]]){
73 int aux = v_sorted[j];
74 v_sorted[j] = v_sorted[j+1];
75 v_sorted[j+1] = aux;
76 }
77 }
78 }
79
80 median = v[v_sorted[n/2]];
81
82 for(int i = 0; i < n; i++){
83 dist_to_median[i] = v[i]-median;
84 if(dist_to_median[i] < 0)
86 }
87
88 for(int i = 0; i < n; i++)
89 p[i] = i;
90
91 for(int i = 0; i < n; i++){
92 for(int j = 0; j < n-1; j++){
93 if(dist_to_median[p[j]] > dist_to_median[p[j+1]]){
94 int aux = p[j];
95 p[j] = p[j+1];
96 p[j+1] = aux;
97 }
98 }
99 }
100
102 free(v_sorted);
103 return p;
104}
105
106int main(int argc, char *argv[]){
107
108 int v[6];
109 v[0] = 5;
110 v[1] = 3;
111 v[2] = 4;
112 v[3] = 1;
113 v[4] = 2;
114 v[5] = 1;
115 int n = 6;
116
119
120
121 for(int i = 0; i < n; i++){
122 printf("%d ",p1[i]);
123 }
124 printf("\n");
125
126 for(int i = 0; i < n; i++){
127 printf("%d ",p2[i]);
128 }
129 printf("\n");
130
131 free(p1);
132 free(p2);
133 return 0;
134}
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 * p2
Definition main.c:13
int * p1
Definition main.c:12
int main(int argc, char *argv[])
int * sorted_by_distance_to_median(int v[], int n)
int * sorted_by_distance_of_median(int v[], int n)