> | 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]); |
> |