394 Using Bubble Sort Speed measures how fast the algorithm can sort data of different sizes. Some sorting algorithms work quickly with small lists but slow down dramatically when dealing with larger lists. Other sorting algorithms work quickly when a list is mostly sorted but slow to a crawl when working with completely unsorted lists. Memory requirements define how much memory the sorting algorithm needs to run. Some sorting algorithms can accept and sort data while they receive the data, which is an online algorithm. (An offline algorithm has to wait to receive the complete set of data before it can even start the sorting process.) Sorting algorithms that use recursion (see Book II, Chapter 6) may be easy to implement and fast but can require lots of memory to sort large amounts of data. Another factor that determines a sorting algorithm’s memory requirements is whether the algorithm is an in-place algorithm. An in-place algorithm can sort data by using the existing data structure that holds the data. For example, if you have an array of numbers, an in-place algorithm can sort the data in that array without needing a separate data structure to hold the data temporarily. Stability refers to whether a sorting algorithm preserves the order of identical data. Suppose you had a list of first and last names, such as John Smith and Mary Smith, and the name John Smith appears at the beginning of a list and Mary Smith appears at the end. A stable sorting algorithm sorts both names and keeps John Smith ahead of Mary Smith, but an unstable algorithm moves Mary Smith ahead of John Smith. (Out of all the sorting algorithms presented in this chapter, heap sort is the only unstable algorithm.) Ultimately, there’s no perfect sorting algorithm; however, a trade-off in size, speed, and ease of implementation finds the best sorting algorithm. Using Bubble Sort The simplest way to sort any amount of data is to start at the beginning and compare the first two adjacent items. So if you need to sort a list of numbers, you compare the first number with the second number. If the first number is bigger, you swap its place with the second number. If the second number is bigger, you don’t do anything at all. After comparing the first two items, you move down to comparing the second and third items, and so on. Repetitively comparing two adjacent items is the basic idea behind the bubble sort algorithm, as shown in Figure 1-1. The bubble sort algorithm gets its name because small values tend to bubble up to the top.
Using Bubble Sort 395 32 9 74 21 Original list 9 32 74 21 Bubble sort compares the first two items and sorts them. 9 32 74 21 Bubble sort compares the next two adjacent items. If they are already sorted, then nothing happens. 9 32 21 74 After reaching the end of the list, bubble sort must go back through the list again. Figure 1-1: A bubble sort repetitively compares two adjacent items. 9 32 21 74 9 21 32 74 9 21 32 74 List is finally sorted. Basically the bubble sort algorithm works like this: 1. Compare two adjacent items. 2. Swap the two items if necessary. 3. Repeat Steps 1 and 2 with each pair of adjacent items. 4. Repeat Steps 1–3 to examine the entire list again until no swapping occurs and then the list is sorted. Although the bubble sort algorithm is easy to implement, it’s also the slowest and most inefficient algorithm because it must examine an entire list multiple times. For sorting a small list of pre-sorted data, the bubble sort algorithm works efficiently. For sorting large lists of unsorted data, any other sorting algorithm is much faster than the bubble sort algorithm, as shown in Figure 1-2. Book IV Chapter 1 Sorting Algorithms
Beginning Programming ALL-IN-ONE DE
Beginning Programming ALL-IN-ONE DE
About the Author I started off as a
Acknowledgments This is the part of
Contents at a Glance Introduction .
Table of Contents Introduction.....
Table of Contents xi Finding an Int
Table of Contents xiii Playing with
Table of Contents xv Using Structur
Table of Contents xvii Searching wi
Table of Contents xix Book VI: Prog
Table of Contents xxi Declaring Con
Introduction If you enjoy using a c
How to Use This Book 3 means they
Book I Getting Started
Chapter 1: Getting Started Programm
How Computer Programming Works 9 De
The History of Computer Programming
The History of Computer Programming
The History of Computer Programming
Figuring Out Programming 17 As a ge
Figuring Out Programming 19 ✦ Lin
Figuring Out Programming 21 Convert
Figuring Out Programming 23 certain
Getting Started with Programming 25
Knowing Programming versus Knowing
Chapter 2: Different Methods for Wr
Spaghetti Programming without a Pla
Planning Ahead with Structured Prog
Planning Ahead with Structured Prog
Planning Ahead with Structured Prog
Making User Interfaces with Event-D
Making User Interfaces with Event-D
Organizing a Program with Object-Or
Organizing a Program with Object-Or
Organizing a Program with Object-Or
Chapter 3: Types of Programming Lan
Choosing Your First Language 51 ext
Teaching Languages 53 Principles Be
Teaching Languages 55 The Interacti
Teaching Languages 57 near future.
Teaching Languages 59 The main disa
Teaching Languages 61 Book I Chapte
“Curly Bracket” Languages 63
“Curly Bracket” Languages 65 Th
“Curly Bracket” Languages 67 C#
“Curly Bracket” Languages 69 Vi
Artificial Intelligence Languages 7
Scripting Languages 73 2. From the
Scripting Languages 75 In compariso
Scripting Languages 77 Transferring
Database Programming Languages 79 @
Comparing Programming Languages 81
Chapter 4: Programming Tools In Thi
Choosing a Compiler 85 3. Choose a
Choosing a Compiler 87 than other c
Choosing a Compiler 89 With a cross
Finding an Interpreter 91 In the ol
Compiling to a Virtual Machine 93 C
Writing a Program with an Editor 95
Fixing a Program with a Debugger 97
Fixing a Program with a Debugger 99
Fixing a Program with a Debugger 10
Creating a Help File 103 Obviously,
Dissecting Programs with a Disassem
Chapter 5: Managing Large Projects
Software Engineering Methods 109 Fi
Software Engineering Methods 111 de
Software Engineering Methods 113 Ad
Automating Software Engineering wit
Automating Software Engineering wit
Automating Software Engineering wit
Automating Software Engineering wit
The Pros and Cons of Software Engin
Book II Programming Basics
Chapter 1: How Programs Work In Thi
Using Keywords as Building Blocks 1
Organizing a Program 131 So if your
Dividing a Program into Subprograms
Dividing a Program into Objects 135
Dividing a Program into Objects 137
Creating a User Interface 139 The u
Chapter 2: Variables, Data Types, a
Declaring Variables 143 This BASIC
Declaring Variables 145 You can alw
Declaring Variables 147 Every progr
Using Different Data Types 149 type
Retrieving Data from a Variable 151
Using Constant Values 153 Using Con
Defining the Scope of a Variable 15
Defining the Scope of a Variable 15
Defining the Scope of a Variable 15
Chapter 3: Manipulating Data In Thi
Using Math to Manipulate Numbers 16
Using Math to Manipulate Numbers 16
Manipulating Strings 167 Most progr
Finding Strings with Regular Expres
Finding Strings with Regular Expres
Using Comparison Operators 173 Comp
Using Boolean Operators 175 Most pr
Using Boolean Operators 177 So if t
Converting Data Types 179 Both type
Chapter 4: Making Decisions by Bran
Picking One Choice with the IF-THEN
Picking Three or More Choices with
Picking Three or More Choices with
Playing with Multiple Boolean Opera
Making Multiple Choices with the SE
Making Multiple Choices with the SE
Making Multiple Choices with the SE
Making Multiple Choices with the SE
Chapter 5: Repeating Commands by Lo
Looping a Fixed Number of Times wit
Looping a Fixed Number of Times wit
Looping a Fixed Number of Times wit
Looping Zero or More Times with the
Playing with Nested Loops 209 This
Checking Your Loops 211 Outer loop
Chapter 6: Breaking a Large Program
Creating and Using Subprograms 215
Creating and Using Subprograms 217
Passing Parameters 219 The #include
Passing Parameters 221 Figure 6-5:
Passing Parameters 223 When you pas
Passing Parameters 225 DIM Temp AS
Repeating a Subprogram with Recursi
Repeating a Subprogram with Recursi
Chapter 7: Breaking a Large Program
How Object-Oriented Programming Wor
Encapsulation Isolates Data and Sub
Encapsulation Isolates Data and Sub
Sharing Code with Inheritance 239 S
Sharing Code with Inheritance 241 F
Design Patterns 243 However, when y
Design Patterns 245 The flyweight p
Object-Oriented Languages 247 Becau
Real-Life Programming Examples 249
Real-Life Programming Examples 251
Real-Life Programming Examples 253
Real-Life Programming Examples 255
Real-Life Programming Examples 257
Chapter 8: Reading and Saving Files
Storing Data in Text Files 261 A co
Storing Data in Text Files 263 Read
Storing Fixed Size Data in Random-A
Storing Fixed Size Data in Random-A
Storing Varying Size Data in Untype
Using Database Files 271 Figure 8-5
Using Database Files 273 Think of a
Using Database Files 275 When using
Chapter 9: Documenting Your Program
Adding Comments to Source Code 279
Adding Comments to Source Code 281
Adding Comments to Source Code 283
Writing Software Documentation 285
Writing Software Documentation 287
Chapter 10: Principles of User Inte
The Evolution of User Interfaces 29
Elements of a User Interface 293 GU
Elements of a User Interface 295 Fi
Elements of a User Interface 297 If
Elements of a User Interface 299 Fi
Elements of a User Interface 301 Fi
Designing a User Interface 303 diff
Designing a User Interface 305 A we
Designing a User Interface 307 Figu
Book III Data Structures
Chapter 1: Structures and Arrays In
Using Structures 313 If you wanted
Using an Array 315 the array, which
Using an Array 317 Perkins has empl
Working with Resizable Arrays 319 D
Working with Multi-Dimensional Arra
Using Structures with Arrays 323 Th
Drawbacks of Arrays 325 To store da
Drawbacks of Arrays 327 Suppose you
Chapter 2: Sets and Linked Lists In
Using Sets 331 Adding (and deleting
Using Sets 333 This command asks th
Using Sets 335 Bill Evans John Doe
Using Linked Lists 337 This tells t
Using Linked Lists 339 Each time yo
Drawbacks of Sets and Linked Lists
Chapter 5: Encryption Algorithms In
The Basics of Encryption 447 in a m
The Basics of Encryption 449 Stream
The Basics of Encryption 451 Electr
Symmetric/Asymmetric Encryption Alg
Cracking Encryption 455 Sender’s
Cracking Encryption 457 Instead of
Cracking Encryption 459 Code cracki
Book V Web Programming
Chapter 1: HyperText Markup Languag
The Structure of an HTML Document 4
The Structure of an HTML Document 4
Defining the Background 469 Adding
Making Tables 471 The anchor point
Making Tables 473 Book V Chapter 1
Making Tables 475 Column 1 Column
Chapter 2: CSS In This Chapter Und
Creating Style Classes 479 color :
Separating Styles in Files 481 Sepa
Cascading Stylesheets 483 If you ha
Chapter 3: JavaScript In This Chapt
Declaring Variables 487 need to def
Using Operators 489 The relational
Branching Statements 491 To make th
Using Arrays 493 A variation of the
Designing User Interfaces 495 A con
Chapter 4: PHP In This Chapter Und
Declaring Variables 499 Declaring V
Using Operators 501 Table 4-3 Logic
Branching Statements 503 Command; }
Creating Functions 505 If you don
Creating Objects 507 Creating Objec
Chapter 5: Ruby In This Chapter Un
Using Operators 511 # long time to
Using Operators 513 Table 5-3 Logic
Looping Statements 515 Command else
Using Data Structures 517 Using Dat
Creating Objects 519 To tell an obj
Book VI Programming Language Syntax
Chapter 1: C and C++ In This Chapte
Declaring Variables 525 Despite min
Declaring Variables 527 All integer
Using Operators 529 Relational oper
Branching Statements 531 Table 1-6
Looping Statements 533 switch (expr
Data Structures 535 If a function d
Using Objects 537 Now you can decla
Using Objects 539 To inherit from m
Chapter 2: Java and C# In This Chap
Declaring Variables 543 The double
Using Operators 545 Declaring float
Using Operators 547 The increment o
Branching Statements 549 if (condit
Looping Statements 551 Because no b
Data Structures 553 If the function
Data Structures 555 You can create
Using Objects 557 So if you created
Chapter 3: Perl and Python In This
Using Operators 561 You can write b
Using Operators 563 The relational
Branching Statements 565 Table 3-5
Looping Statements 567 In Python, t
Perl Data Structures 569 A typical
Python Data Structures 571 Creating
Using Objects 573 After you define
Chapter 4: Pascal and Delphi In Thi
Declaring Variables 577 Creating Co
Declaring Constants 579 Declaring d
Branching Statements 581 Table 4-5
Looping Statements 583 Looping Stat
Data Structures 585 FUNCTION Functi
Creating Objects 587 clear a dynami
Chapter 5: Visual Basic and REALbas
The Structure of a BASIC Program 59
Declaring Variables 593 Declaring i
Declaring Constants 595 Declaring B
Branching Statements 597 Table 5-7
Branching Statements 599 The preced
Creating Subprograms and Functions
Data Structures 603 Data Structures
Creating Objects 605 Creating Objec
Book VII Applications
Chapter 1: Database Management In T
The Basics of Databases 611 To retr
The Basics of Databases 613 Althoug
The Basics of Databases 615 Employe
Manipulating Data 617 Tables divide
Manipulating Data 619 The Join comm
Manipulating Data 621 SET PhoneNumb
Database Programming 623 Figure 1-1
Chapter 2: Bioinformatics In This C
The Basics of Bioinformatics 627 Un
Searching Databases 629 ✦ Swiss-P
Bioinformatics Programming 631 Alth
Chapter 3: Computer Security In Thi
Stopping Malware 635 Worms Similar
Stopping Hackers 637 Stopping Hacke
Secure Computing 639 Forensics If y
Secure Computing 641 start. The ide
Chapter 4: Artificial Intelligence
Problem Solving 645 Game-playing Be
Problem Solving 647 Expert System K
Problem Solving 649 Humans can unde
Problem Solving 651 Such speech rec
Machine Learning 653 With LISP, eve
Machine Learning 655 Robotics and a
`Chapter 5: The Future of Computer
Picking an Operating System 659 opt
Cross-Platform Programming 661 Unfo
Cross-Platform Programming 663 The
Cross-Platform Programming 665 Anot
The Programming Language of the Fut
The Programming Language of the Fut
Index Numerics 0 (zero) initializin
Index 673 blocks of commands in cur
Index 675 dictionaries versus, 352
Index 677 database management conne
Index 679 enumerated variables (C/C
Index 681 hybrid OOP languages, 246
Index 683 knowledge base, 646, 647
Index 685 modeling, 44-45 Modula-2
Index 687 advantages and disadvanta
Index 689 looping statements, 600-6
Index 691 extreme programming metho
Index 693 source code as, 264 tab-d
Index 695 as event-driven programmi
BUSINESS, CAREERS & PERSONAL FINANC