add pancake sort · pythonpeixun/AlgorithmVisualizer@bfc8eef · GitHub
Skip to content

Commit bfc8eef

Browse files
add pancake sort
1 parent 8fcbad0 commit bfc8eef

4 files changed

Lines changed: 52 additions & 1 deletion

File tree

algorithm/category.json

Lines changed: 2 additions & 1 deletion
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
logger._print('original array = [' + D.join(', ') + ']');
2+
var N = D.length;
3+
function flip (start) {
4+
tracer._select(start, N)._wait();
5+
var idx = 0;
6+
for (var i=start;i<(start+N)/2;i++) {
7+
tracer._select(i)._wait();
8+
var temp = D[i];
9+
D[i] = D[N-idx-1];
10+
D[N-idx-1] = temp;
11+
idx++;
12+
tracer._notify(i, D[i])._notify(N-idx, D[N-idx])._wait();
13+
tracer._denotify(i)._denotify(N-idx);
14+
tracer._deselect(i);
15+
}
16+
tracer._deselect(start, N);
17+
}
18+
for (var i=0;i<N-1;i++) {
19+
logger._print('round ' + (i+1));
20+
var currArr = D.slice(i, N);
21+
var currMax = currArr.reduce((prev, curr, idx) => {
22+
return (curr > prev.val) ? { idx: idx, val: curr} : prev;
23+
}, {idx: 0, val: currArr[0]});
24+
if (currMax.idx !== i) {
25+
logger._print('flip at ' + (currMax.idx+i) + ' (step 1)');
26+
flip(currMax.idx+i, N);
27+
logger._print('flip at ' + (i) + ' (step 2)');
28+
flip(i, N);
29+
}
30+
}
31+
logger._print('sorted array = [' + D.join(', ') + ']');
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
var chart = new ChartTracer();
2+
var tracer = new Array1DTracer().attach(chart);
3+
var logger = new LogTracer();
4+
var D = Array1D.random(10);
5+
tracer._setData(D);
Lines changed: 14 additions & 0 deletions

0 commit comments

Comments
 (0)