24 static void print_edge(
Edgeptr edge )
38 print_edge( edge_array[i] );
69 int number_of_crossings = 0;
70 int index = starting_index - 1;
71 Edgeptr edge_to_insert = edge_array[starting_index];
73 && edge_array[index]->down_node->position
76 number_of_crossings++;
78 edge_array[index + 1] = edge_array[index];
81 edge_array[index + 1] = edge_to_insert;
82 return number_of_crossings;
88 printf(
"-> count_inversions_down\n");
89 printf(
" edge array for upper layer %d:\n",
90 edge_array[0]->up_node->layer );
91 print_edge_array( edge_array, number_of_edges );
93 int number_of_inversions = 0;
101 printf(
"<- count_inversions_down, number = %d\n", number_of_inversions);
102 printf(
" edge array for upper layer %d:\n",
103 edge_array[0]->up_node->layer );
104 print_edge_array( edge_array, number_of_edges );
106 return number_of_inversions;
110 int starting_index,
int diff )
112 int number_of_crossings = 0;
113 int index = starting_index - 1;
114 Edgeptr edge_to_insert = edge_array[starting_index];
116 && edge_array[index]->up_node->position
119 number_of_crossings++;
121 edge_array[index + 1] = edge_array[index];
124 edge_array[index + 1] = edge_to_insert;
125 return number_of_crossings;
131 printf(
"-> count_inversions_up\n");
132 print_edge_array( edge_array, number_of_edges );
134 int number_of_inversions = 0;
142 printf(
"<- count_inversions_up, number = %d\n", number_of_inversions);
143 print_edge_array( edge_array, number_of_edges );
145 return number_of_inversions;
149 int num_edges,
int start_pos )
152 for( ; edges_added < num_edges; edges_added++ )
154 edge_array[ start_pos + edges_added ] = edges_to_add[ edges_added ];
Definition of functions that are used to count and update crossings locally. Used both by crossings...
Definitions common to all edge crossing heuristic source files.
Interface for functions that perform various sorts. All sorts are stable.
int insert_and_count_inversions_down(Edgeptr *edge_array, int starting_index, int diff)
void add_edges_to_array(Edgeptr *edge_array, Edgeptr *edges_to_add, int num_edges, int start_pos)
int insert_and_count_inversions_up(Edgeptr *edge_array, int starting_index, int diff)
static void update_crossings(Edgeptr edge_one, Edgeptr edge_two, int diff)
Definition of data structures and access functions for a layered graph.
int count_inversions_down(Edgeptr *edge_array, int number_of_edges, int diff)
int count_inversions_up(Edgeptr *edge_array, int number_of_edges, int diff)