MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Insertion into sorted list

  • To: mathgroup at smc.vnet.net
  • Subject: [mg71222] Re: Insertion into sorted list
  • From: "Andrew Moylan" <andrew.j.moylan at gmail.com>
  • Date: Fri, 10 Nov 2006 06:38:58 -0500 (EST)
  • References: <eimq10$9b7$1@smc.vnet.net><200611081108.GAA21961@smc.vnet.net> <eiusl1$gua$1@smc.vnet.net>

Thanks Chris. The Convert To -> InputForm menu item is the feature I
knew should be there and just didn't know about. MathSource looks like
the right solution for making packages available.

Cheers,
Andrew


On Nov 9, 8:33 pm, "Chris Chiasson" <c... at chiasson.name> wrote:
> Left click the cell bracket.
>
> from the main menu bar:
> Cell -> Convert To -> InputForm
>
> cut n paste
>
> Otherwise, you can submit your notebook/package to MathSource.
>
> If you want to open source your software, there are a number of free
> hosting services such as SourceForge, Tigris, Google Code...
>
> There are several paid hosting solutions also.
>
> Finally, you could host it yourself.
>
> On 11/8/06, Andrew Moylan <andrew.j.moy... at gmail.com> wrote:
>
>
>
> > Thanks for your replies. I've written a function 'InsertSorted' that
> > solves this problem using a binary search. Here's the usage string:
>
> > InsertSorted::usage = "InsertSorted[l, e]
> >     gives the sorted List l with e inserted such that the resulting
> > List is \
> > also sorted. InsertSorted[l, e, p] uses the ordering function p.";
>
> > And here's the function definition, which can be pasted into a new cell
> > in a Mathematica notebook:
>
> > \!\(\(InsertSorted[lst_List, e_, p_: \((OrderedQ[{#1, #2}] &)\)] :=
> >       Module[\[IndentingNewLine]{lower = 1,
> >           upper = Length[lst] + 1}, \[IndentingNewLine]While[
> >           lower \[NotEqual]
> >             upper, \[IndentingNewLine]\(With[{mid =
> >                   Floor[\(lower + upper\)\/2]},
> > \[IndentingNewLine]Print[
> >                 p[lst\[LeftDoubleBracket]mid\[RightDoubleBracket],
> >                   e]]; \[IndentingNewLine]If[
> >                 p[e, lst\[LeftDoubleBracket]
> >                     mid\[RightDoubleBracket]], \[IndentingNewLine]upper
> > =
> >                   mid, \[IndentingNewLine]lower =
> >                   mid + 1\[IndentingNewLine]];\[IndentingNewLine]];\)\
> > \[IndentingNewLine]]; \[IndentingNewLine]Insert[lst, e,
> >           lower]\[IndentingNewLine]];\)\)
>
> > I'm sorry to dsitribute the function in this slightly messy way. I also
> > have a notebook and associated automatically-generated .m file, which
> > represent a package "InsertSorted`" that can be placed in
> > Mathematica/Applications as usual and accessed via the Needs function.
> > Can anyone suggest the "correct" way to distribute such packages to any
> > users of this newsgroup who might be interested?
>
> > Cheers,
> > Andrew
>
> > On Nov 6, 6:59 pm, "Andrew Moylan" <andrew.j.moy... at gmail.com> wrote:
> > > Hi all,
>
> > > I have a sorted List. I need to occasionally insert new elements, while
> > > always keeping the list sorted. Is there a more efficient way to do
> > > this than the most obvious way (calling Append then calling Sort)?
>
> > > Thanks for any help,
> 
> > > Andrew--http://chris.chiasson.name/


  • Prev by Date: Bairstow Method
  • Next by Date: Re: [Help Needed] Converting C++ program into Mathematica Function
  • Previous by thread: Re: Re: Insertion into sorted list
  • Next by thread: Re: Insertion into sorted list