Advertisement

11.23.2003 at 02:20PM PST, ID: 20806452
[x]
Attachment Details

bubble sort program

Asked by alqaoud in Assembly Programming Language

Tags: sort, bubble, program

I wrote a program  in (a86 )to sort the whole array into ascending order and it’s run ok but how can I make it more effcient(reducing unnecessary work) this is my code;


Code segment
      Jmp  main
      Add1 dw 9,3,2,7,1,4,2,5,8,1

Main:      mov si,0
      call order
      mov si,0
      call order
      mov si,0
      call order
      mov si,0
      call order
      mov si,0
      call order
      mov si,0
      call order
      mov si,0
      call order
      mov si,0
      call order
      ret

order:      call orderab
      call orderab
      call orderab
      call orderab
      call orderab
      call orderab
      call orderab
      call orderab
      call orderab
      
orderab:      mov ax,add1[si]
      cmp ax,add1[si+2]
      jli finish
      mov bx,add1[si+2]
      mov add1[si],bx
      mov add1[si+2],ax
finish:      inc si
      inc si
      retStart Free Trial
[+][-]11.25.2003 at 01:07PM PST, ID: 9820549

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 7-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]11.25.2003 at 05:19PM PST, ID: 9821949

Often, when Experts are collaborating with members who have asked questions, they will request additional information about the problem. Askers respond with an author comment like this one.

Start your 7-day free trial to view this Author Comment or ask the Experts your question.

 
[+][-]11.25.2003 at 06:02PM PST, ID: 9822072

View this solution now by starting your 7-day free trial. Setting up your free trial is quick, easy, and secure. We will return you to this solution, unlocked, when you're done.

 

About this solution

Zone: Assembly Programming Language
Tags: sort, bubble, program
Sign Up Now!
Solution Provided By: terageek
Participating Experts: 3
Solution Grade: A
 
 
[+][-]01.17.2004 at 08:37AM PST, ID: 10136562

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 7-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]01.19.2004 at 01:49PM PST, ID: 10150426

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 7-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]02.12.2004 at 12:51AM PST, ID: 10340530

Experts Exchange has a courteous staff of administrators who help members get the most out of the website by means of administrative comments like this one.

Start your 7-day free trial to view this Administrative Comment or ask the Experts your question.

 
[+][-]02.26.2004 at 04:22PM PST, ID: 10465516

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 7-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]02.27.2004 at 05:52PM PST, ID: 10474109

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 7-day free trial to view this Expert Comment or ask the Experts your question.

 
 
Loading Advertisement...
Microsoft
  • Internet Protocols
  • Applications
  • Development
  • OS
  • Hardware
  • Windows Security
Apple
  • Operating Systems
  • Hardware
  • Programming
  • Networking
  • Software
Internet
  • Search Engines
  • File Sharing
  • WebTrends / Stats
  • Spy / Ad Blockers
  • Web Browsers
  • New Net Users
  • Web Development
  • Chat / IM
  • Anti Spam
  • Web Servers
  • Anti-Virus
  • Email Clients
Gamers
  • Tips
  • Online / MMORPG
  • Puzzle
  • Emulators
  • Action / Adventure
  • Role Playing
  • Consoles
  • Game Programming
  • Strategy
  • Sports
  • Misc
  • Computer Games
Digital Living
  • Hardware
  • Automotive
  • New Net Users
  • New Users
  • Software
  • Digital Music
  • Gaming World
  • Home Security
  • Apple
  • Networking Hardware
Virus & Spyware
  • Vulnerabilities
  • IDS
  • Encryption
  • Anti-Virus
  • Operating Systems Security
  • Software Firewalls
  • WebApplications
  • Cell Phones
  • Operating Systems
  • Internet
  • Hardware Firewalls
Hardware
  • Displays / Monitors
  • Handhelds / PDAs
  • Components
  • Peripherals
  • Laptops/Notebooks
  • Servers
  • Misc
  • Apple
  • Embedded Hardware
  • Networking Hardware
  • Storage
  • Desktops
  • New Users
Software
  • System Utilities
  • Industry Specific
  • Network Management
  • Photos / Graphics
  • Page Layout
  • VMware
  • Misc
  • Web Development
  • OS
  • CYGWIN
  • Voice Recognition
  • Virtualization
  • Message Queue
  • Quality Assurance
  • Security
  • Firewalls
  • MultiMedia Applications
  • Development
  • Database
  • Office / Productivity
  • Business Management
  • OS/2 Apps
  • Server Software
  • Internet / Email
ITPro
  • OS
  • Storage
  • Encryption
  • Operating Systems Security
  • Apple Hardware
  • Laptops & Notebooks
  • Servers
  • Networking Hardware
  • Peripherals
  • Devices
  • Displays / Monitors
  • WebTrends / Stats
  • Search Engines
  • Firewalls
  • Web Computing
  • WebApplications
  • IDS
  • Vulnerabilities
  • Email Clients
  • File Sharing
  • Spy / Ad Blockers
  • Web Browsers
  • Web Servers
  • Networking
  • Anti-Virus
  • Consulting
  • Chat / IM
  • Anti Spam
Developer
  • Web Servers
  • Web Browsers
  • Game Programming
  • Dev Tools
  • Industry Specific
  • Office / Productivity
  • Database
  • CYGWIN
  • Web Development
  • Search Engines
  • File Sharing
  • WebTrends / Stats
  • Programming
  • Content Management
  • Application Servers
  • Protocols
Storage
  • Removable Backup Media
  • Storage Technology
  • Servers
  • Grid
  • Remote Access
  • Backup / Restore
  • Misc
  • Hard Drives
OS
  • Miscellaneous
  • Security
  • Development
  • Linux
  • VMware
  • MainFrame OS
  • Unix
  • Apple
  • OS / 2
  • AS / 400
  • BeOS
  • Microsoft
  • VMS / OpenVMS
Database
  • Oracle
  • Miscellaneous
  • MySQL
  • Software
  • Sybase
  • Contact Management
  • PostgreSQL
  • Data Manipulation
  • Clarion
  • InterSystems Cache
  • Siebel
  • MUMPS
  • OLAP
  • SQLBase
  • SAS
  • GIS & GPS
  • 4GL
  • Berkeley DB
  • DB2
  • Informix
  • Interbase / Firebird
  • FoxPro
  • Reporting
  • LDAP
  • Filemaker Pro
  • MS SQL Server
  • dBase
  • MS Access
Security
  • Misc
  • Web Browsers
  • Software Firewalls
  • Operating Systems Security
  • File Sharing
  • Spy / Ad Blockers
  • Vulnerabilities
  • WebApplications
  • IDS
  • Anti-Virus
  • Encryption
  • Anti Spam
  • Email Clients
  • VPN
  • Chat / IM
Programming
  • Editors IDEs
  • Installation
  • Handhelds / PDAs
  • Multimedia Programming
  • System / Kernel
  • Automation
  • Algorithms
  • Game
  • Signal Processing
  • Project Management
  • Open Source
  • Database
  • Misc
  • Languages
  • Processor Platforms
  • Theory
Web Development
  • Scripting
  • Blogs
  • Web Servers
  • Software
  • Search Engines
  • Web Graphics
  • Web Services
  • Images
  • Internet Marketing
  • Images and Photos
  • Components
  • Document Imaging
  • Web Languages/Standards
  • Illustration
  • WebApplications
  • Fonts
  • WebTrends / Stats
  • Authoring
  • Digital Camera Software
  • Miscellaneous
Networking
  • Protocols
  • Apple Networking
  • Network Management
  • Message Queue
  • Application Servers
  • Content Management
  • File Servers
  • Email Servers
  • Misc
  • Java Editors & IDEs
  • Wireless
  • Networking Hardware
  • Backup / Restore
  • System Utilities
  • ISPs & Hosting
  • Web Servers
  • Storage Technology
  • Removable Backup Media
  • Servers
  • Web Computing
  • Broadband
  • Grid
  • OS / 2
  • Novell Netware
  • Unix Networking
  • Windows Networking
  • Security
  • Telecommunications
  • Operating Systems
  • Linux Networking
Other
  • Lounge
  • Business Travel
  • Community Support
  • New Net Users
  • Philosophy / Religion
  • Math / Science
  • Miscellaneous
  • URLs
  • Expert Lounge
  • Politics
  • Puzzles / Riddles
  • Automotive
Community Support
  • Suggestions
  • New to EE
  • New Topics
  • CleanUp
  • Announcements
  • General
  • Feedback
  • Input
  • EE Bugs
 
11.25.2003 at 01:07PM PST, ID: 9820549
Each time you call order, you need to call orderab 1 fewer time.  In addition, you could put orderab inline.  I left main unrolloed since it is still called a constant number of times.  Also, since you have dwords, shouldn't your indexes go by 4?

Code segment
     Jmp  main
     Add1 dw 9,3,2,7,1,4,2,5,8,1

Main:     mov cx, 9
     call order
     mov cx, 8
     call order
     mov cx, 7
     call order
     mov cx, 6
     call order
     mov cx, 5
     call order
     mov cx, 4
     call order
     mov cx, 3
     call order
     mov cx, 2
     call order
     mov cx, 1
     call order
     ret

order:     xor si, si
orderab:     mov ax,add1[si]
     cmp ax,add1[si+4]
     jle finish
     mov bx,add1[si+4]
     mov add1[si],bx
     mov add1[si+4],ax
finish:     add si, 4
     loop orderab
     ret

This will reduce the work almost in half, but add some overhad from the loop.  If you are concerned about average run-time, you could do the following.  It will run very quickly if the list is already in order (just 9 compares!), but slower than the above code if it is in reverse order (same number of compares, with more overhead).

Main:  mov cx, 9
order:     xor si, si
     mov di, cx
     xor dx, dx
orderab:
     mov ax,add1[si]
     cmp ax,add1[si+4]
     jle finish
     mov dx, di
     sub dx, ci
     mov bx,add1[si+4]
     mov add1[si],bx
     mov add1[si+4],ax
finish:     add si, 4
     loop orderab
     inc dx
     mov cx, dx
     loop order
     ret
 
11.25.2003 at 05:19PM PST, ID: 9821949
terageek, thank you very much but you first program give this result 2,3,1,7,2,4,8,5,9,1 and the second program didn't excute correctly and the the result i need should be 1,1,2,2,3,4,5,7,8,9 like the result from my program i wrote in beginning.
 
11.25.2003 at 06:02PM PST, ID: 9822072
Hmmm....

If your code worked correctly, you can try changing my 4s to 2s.

I just saw a typo in the second code...

     sub dx, ci
should be:
     sub dx, cx
Accepted Solution
 
01.17.2004 at 08:37AM PST, ID: 10136562
The best way to make the sort more efficient is to use a different algorithm such as quicksort, heapsort, or mergesort.  Those types of sorts require  n* log n comparisons on average, while a sort such as bubble sort requires n*n comparisons.  These algorithms are a lot faster, especially for arrays larger than 300 or so.  For some examples of other algorithms and source code, try http://www.cs.ubc.ca/spider/harrison/Java/sorting-demo.html.
 
01.19.2004 at 01:49PM PST, ID: 10150426
Actually, an optimized bubble-sort will require only n comparisons on an array which is already sorted.  Quicksort, heapsort, mergesort and insertionsort all take n*log n.  If your data set is already mostly sorted, bubble-sort will give you the best average runtime.
 
02.12.2004 at 12:51AM PST, ID: 10340530
{{ Force Accepted -- Dan Rollins / EE Page Editor }}
 
02.26.2004 at 04:22PM PST, ID: 10465516
if the list is sorted and all you are trying to do is insert an element you dont need anywhere near n comparisons, you will only need log n

each comparison you are chopping the list in 1/2
 
02.27.2004 at 05:52PM PST, ID: 10474109
Sorting a list and inserting an element into a sorted list are two different problems.

There are a few algorithms for inserting a new element into a sorted list.  There is a binary search insertion which requires log (n) compares, and there is a linear search insertion which can take from 1 to n compares.  If your data is in a linked list or you can start off taking a guess as to about where a piece of data should go, the linear search can be faster on average.

Dispite the big-O analysis, sometimes a generally "slower" algorithm can be faster when you take into account your specific data-set.
 
 
20080716-EE-VQP-32