homepage Welcome to WebmasterWorld Guest from 54.197.49.162
register, free tools, login, search, pro membership, help, library, announcements, recent posts, open posts,
Become a Pro Member

Visit PubCon.com
Home / Forums Index / Hardware and OS Related Technologies / Linux, Unix, and *nix like Operating Systems
Forum Library, Charter, Moderators: bakedjake

Linux, Unix, and *nix like Operating Systems Forum

    
How to send non-file input to the "sort" command?
Calling the shell from another environment
MichaelBluejay




msg:4156845
 2:59 pm on Jun 22, 2010 (gmt 0)

I'm using a programming language that, inexplicably, doesn't have a "sort" command built in. However, it does let me send commands to the shell and get the output. So my idea is that I could send my data to the sort command in the Unix shell, and get back the sorted output.

But I don't know the syntax to feed it my data. I know how to use sort if the data is a file, and how to type in data to be sorted manually in the shell (type a bunch of lines and then CTRL-D to end the input), but I'm not sure how to pass data from a program. I couldn't find anything in the search engines about this.

Maybe I need to send a CTRL-D from my program as the final character of the data I'm sending? I'd be willing to try, but I don't know how to generate a CTRL-D as text that I could send....

 

lammert




msg:4157322
 3:13 am on Jun 23, 2010 (gmt 0)

Preparing all your data for output to the sort program, defining the command line for sort and reading the data back in seems a lot more work than writing yourself a simple sort algorithm in your programming language.

You didn't mention which programming language you use, but a simple sort algorithm with execution time equal to the square of the number of items could be written in practically any programming language as:

FOR a=1 to N-1 DO FOR b=a+1 to N DO
IF item[a] > item[b] THEN swap( item[a], item[b] ); ENDIF;
ENDFOR; ENDFOR;


More efficient sort algorithms like heapsort or quicksort require about 25 lines of code to write.

MichaelBluejay




msg:4157354
 4:32 am on Jun 23, 2010 (gmt 0)

Thanks for the reply. The language is SuperTalk, but I just found out that it comes with an add-on that allows sorting ability, so my sorting problem is solved.

I had looked into writing my own sort, but it kind of scared me, since I have a hard time understanding the concepts. I think what you suggested is a "bubble" sort. I was looking at an "insertion" algorithm because it appeared to have better performance without being an order of magnitude more complex. [sorting-algorithms.com...]

Fortunately I didn't have to try to figure out how to code it in SuperTalk!

lammert




msg:4157370
 5:24 am on Jun 23, 2010 (gmt 0)

Good to hear that the problem can be solved inside your programming environment.

The example I proposed was indeed bubble sort. Not the most efficient algorithm, but it needs the least amount of code. It suffices for a maximum of a few thousand items, but with larger data sets gets really slow.

Success with your project!

Global Options:
 top home search open messages active posts  
 

Home / Forums Index / Hardware and OS Related Technologies / Linux, Unix, and *nix like Operating Systems
rss feed

All trademarks and copyrights held by respective owners. Member comments are owned by the poster.
Home ¦ Free Tools ¦ Terms of Service ¦ Privacy Policy ¦ Report Problem ¦ About ¦ Library ¦ Newsletter
WebmasterWorld is a Developer Shed Community owned by Jim Boykin.
© Webmaster World 1996-2014 all rights reserved