| > | with(plots); |
| > | plotperm := proc(w::list,i::integer) |
| > | local c, n, g_1, g_2; |
| > | c := nops(w); |
| > | if i-1 <> c then |
| > | g_1 := pointplot({seq([n,w[n]],n=1..i-1)},symbolsize=30,color=green): |
g_2 := pointplot({seq([n,w[n]],n=i..c)},symbolsize=30,color=red):
| > | display([g_1,g_2],axes=boxed,symbol=circle); |
| > | else |
| > | g_1 := pointplot({seq([n,w[n]],n=1..c)},symbolsize=30,color=green): |
display([g_1],symbolsize=30,color=green,axes=boxed,symbol=circle);
| > | fi; |
| > | end: |
| > |
| > |
Warning, the name changecoords has been redefined
| > | plotperm([6,3,2,9,1,2,9,11,12,7,8,5,6,1,1,3,2,1,2,6,4,5],2); |
| > | with(combinat,randperm); |
| > | plotperm(randperm(12),3); |
| > | inserc := proc(w::list) |
| > | local c,v,i,j,m; |
| > | i := 2; |
| > | v := w; |
| > | c := nops(w); |
| > | plotperm(v,i); |
| > | while i <= c do |
| > | j := i-1; |
| > | m := v[i]; |
| > | while (j > 0 and v[j] > m) do |
| > | v[j+1] := v[j]; |
| > | j := j-1; |
| > | end do; |
| > | v[j+1] := m; |
| > | print(plotperm(v,i)); |
| > | print(v); |
| > | i := i+1; |
| > | end do; |
| > | plotperm(v,c+1); |
| > | end: |
| > | inserc(randperm(10)); |
| > | inserc([9, 1, 5, 4, 7, 10, 8, 12, 2, 6, 11, 3]); |
| > |