-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvisualization tool-B.cpp
123 lines (100 loc) · 2.69 KB
/
visualization tool-B.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include "graphics.h"
#include <bits/stdc++.h>
using namespace std;
// Initialize the size
// with the total numbers to sorted
// and the gap to be maintained in graph
vector<int> numbers;
int size = 200;
int gap = 4;
// Function for swapping the lines graphically
void swap(int i, int j, int x, int y)
{
// Swapping the first line with the correct line
// by making it black again and then draw the pixel
// for white color.
setcolor(GREEN);
line(i, size, i, size - x);
setcolor(BLACK);
line(i, size, i, size - x);
setcolor(WHITE);
line(i, size, i, size - y);
// Swapping the first line with the correct line
// by making it black again and then draw the pixel
// for white color.
setcolor(GREEN);
line(j, size, j, size - y);
setcolor(BLACK);
line(j, size, j, size - y);
setcolor(WHITE);
line(j, size, j, size - x);
}
// Bubble sort function
void bubbleSort()
{
int temp, i, j;
for (i = 1; i < size; i++) {
for (j = 0; j < size - i; j++) {
if (numbers[j] > numbers[j + 1]) {
temp = numbers[j];
numbers[j] = numbers[j + 1];
numbers[j + 1] = temp;
// As we swapped the last two numbers
// just swap the lines with the values.
// This is function call
// for swapping the lines
swap(gap * j + 1,
gap * (j + 1) + 1,
numbers[j + 1],
numbers[j]);
}
}
}
}
// Driver program
int main()
{
// auto detection of screen size
int gd = DETECT, gm;
int wid1;
// Graph initialization
initgraph(&gd, &gm, NULL);
// setting up window size (gap*size) * (size)
wid1 = initwindow(gap * size + 1, size + 1);
setcurrentwindow(wid1);
// Initializing the array
for (int i = 1; i <= size; i++)
numbers.push_back(i);
// Find a seed and shuffle the array
// to make it random.
// Here different type of array
// can be taken to results
// such as nearly sorted, already sorted,
// reverse sorted to visualize the result
unsigned seed
= chrono::system_clock::now()
.time_since_epoch()
.count();
shuffle(numbers.begin(),
numbers.end(),
default_random_engine(seed));
// Initial plot of numbers in graph taking
// the vector position as x-axis and its
// corresponding value will be the height of line.
for (int i = 1; i <= gap * size; i += gap) {
line(i, size, i, (size - numbers[i / gap]));
}
// Delay the code
delay(200);
// Call sort
bubbleSort();
for (int i = 0; i < size; i++) {
cout << numbers[i] << " ";
}
cout << endl;
// Wait for sometime .
delay(5000);
// Close the graph
closegraph();
return 0;
}