SlideShare a Scribd company logo
Programming
Sorting
Arrays
COMP102 Prog. Fundamentals. Sorting I/ Slide 2
Sorting
 To arrange a set of items in sequence.
 It is estimated that 25~50% of all
computing power is used for sorting
activities.
 Possible reasons:
 Many applications require sorting;
 Many applications perform sorting when they
don't have to;
 Many applications use inefficient sorting
algorithms.
COMP102 Prog. Fundamentals. Sorting I/ Slide 3
Sorting Applications
 To prepare a list of student ID, names, and
scores in a table (sorted by ID or name) for easy
checking.
 To prepare a list of scores before letter grade
assignment.
 To produce a list of horses after a race (sorted
by the finishing times) for payoff calculation.
 To prepare an originally unsorted array for
ordered binary searching.
COMP102 Prog. Fundamentals. Sorting I/ Slide 4
Some Sorting Methods
 Selection sort
 Bubble sort
 Shell sort (a simple but faster sorting
method than above; see p.331 of
Numerical Recipes in C, 2nd ed., by
William H. Press et al, Cambridge
University Press, 1992)
 Quick sort (a very efficient sorting method
for most applications; p.332-336, ibid.)
COMP102 Prog. Fundamentals. Sorting I/ Slide 5
Ex. 1A: Selection Sort
 Selection sort performs sorting by
repeatedly putting the largest element in
the unsorted portion of the array to the end
of this unsorted portion until the whole
array is sorted.
 It is similar to the way that many people do
their sorting.
COMP102 Prog. Fundamentals. Sorting I/ Slide 6
Ex. 1A: Selection Sort
 Algorithm
1. Define the entire array as the unsorted
portion of the array
2. While the unsorted portion of the array
has more than one element:
 Find its largest element.
 Swap with last element (assuming their
values are different).
 Reduce the size of the unsorted
portion of the array by 1.
Before sorting 14 2 10 5 1 3 17 7
After pass 1 14 2 10 5 1 3 7 17
After pass 2 7 2 10 5 1 3 14 17
After pass 3 7 2 3 5 1 10 14 17
After pass 4 1 2 3 5 7 10 14 17
// Sort array of integers in ascending order
void select(int data[], // in/output: array
int size){ // input: array size
int temp; // for swap
int max_index; // index of max value
for (int rightmost=size-1; rightmost>0; rightmost--){
//find the largest item in the unsorted portion
//rightmost is the end point of the unsorted part of array
max_index = 0; //points the largest element
for ( int current=1; current<=rightmost; current++)
if (data[current] > data[max_index])
max_index = current;
//swap the largest item with last item if necessary
if (data[max_index] > data[rightmost]){
temp = data[max_index]; // swap
data[max_index] = data[rightmost];
data[rightmost] = temp;
}
}}
const int array_size = 8;
int main() {
int list[array_size] = {14, 2, 10, 5, 1,
3, 17, 7};
int index, ans;
cout << "Before sorting: ";
for (index = 0; index<array_size; index++)
cout << list[index] <<" ";
cout << endl;
cout << "Enter sorting method 1(select), 2(bubble):";
cin >> ans;
if (ans == 1) select(list, array_size);
else bubble(list, array_size);
cout << endl << "After sorting: ";
for (index = 0; index<array_size; index++)
cout << list[index] <<" ";
cout << endl;
return 0;
}
COMP102 Prog. Fundamentals. Sorting I/ Slide 10
Ex. 1B: Bubble Sort
 Bubble sort examines the array from start
to finish, comparing elements as it goes.
 Any time it finds a larger element before a smaller
element, it swaps the two.
 In this way, the larger elements are passed
towards the end.
 The largest element of the array therefore
"bubbles" to the end of the array.
 Then it repeats the process for the unsorted
portion of the array until the whole array is sorted.
COMP102 Prog. Fundamentals. Sorting I/ Slide 11
Ex. 1A: Bubble Sort
 Bubble sort works on the same general principle as
shaking a soft drink bottle.
 Right after shaking, the contents are a mixture of
bubbles and soft drink, distributed randomly.
 Because bubbles are lighter than the soft drink,
they rise to the surface, displacing the soft drink
downwards.
 This is how bubble sort got its name, because the
smaller elements "float" to the top, while
the larger elements "sink" to the bottom.
COMP102 Prog. Fundamentals. Sorting I/ Slide 12
Ex. 1B: Bubble Sort
 Algorithm
Define the entire array as the unsorted
portion of the array.
While the unsorted portion of the array has
more than one element:
1. For every element in the unsorted portion,
swap with the next neighbor if it is larger than
the neighbor.
2. Reduce the size of the unsorted portion of the
array by 1.
Before sorting 14 2 10 5 1 3 17 7
outer=7, inner=0 2 14 10 5 1 3 17 7
outer=7, inner=1 2 10 14 5 1 3 17 7
outer=7, inner=2 2 10 5 14 1 3 17 7
outer=7, inner=3 2 10 5 1 14 3 17 7
outer=7, inner=4 2 10 5 1 3 14 17 7
outer=7, inner=6 2 10 5 1 3 14 7 17
outer=6, inner=1 2 5 10 1 3 14 7 17
outer=6, inner=2 2 5 1 10 3 14 7 17
outer=6, inner=3 2 5 1 3 10 14 7 17
outer=6, inner=5 2 5 1 3 10 7 14 17
outer=5, inner=1 2 1 5 3 10 7 14 17
outer=5, inner=2 2 1 3 5 10 7 14 17
outer=5, inner=4 2 1 3 5 7 10 14 17
outer=4, inner=0 1 2 3 5 7 10 14 17
---
outer=1, inner=0 1 2 3 5 7 10 14 17
//Example1b: Bobble sort
// Sort an array of integers in ascending order
void bubble(int data[], // in/output: array
int size){ // input: array size
int temp; // for swap
for(int outer=size-1; outer > 0; outer--){
for (int inner=0; inner < outer; inner++) {
// traverse the nested loops
if ( data[inner] > data[inner+1] ) {
// swap current element with next
// if the current element is greater
temp = data[inner];
data[inner] = data[inner+1];
data[inner+1] = temp;
}
} // inner for loop
} // outer for loop
}
const int array_size = 12, string_size = 11;
int main() {
char month[array_size][string_size] = {"January",
"February","March","April","May","June","July","August",
"September", "October", "November", "December"};
int index, ans;
cout << "Enter sorting method 1(select), 2(bubble): ";
cin >> ans;
if (ans == 1) select(month, array_size);
else bubble(month, array_size);
cout << endl << "After sorting: ";
for (index = 0; index<array_size; index++)
cout << month[index] <<" ";
cout << endl;
return 0;
}
0 1 2 3 4 5 6 7 8 9 10
month[0] J a n u a r y 0
month[1] F e b r u a r y 0
month[2] M a r c h 0
month[3] A p r i l 0
month[4] M a y 0
month[5] J u n e 0
month[6] J u l y 0
month[7] A u g u s t 0
month[8] S e p t e m b e r 0
month[9] O c t c b e r 0
month[10] N o v e m b e r 0
month[11] D e c e m b e r 0
// Sort array of strings in ascending order
void select(char data[][string_size], // in/output: array
int size){ // input: array size
char temp[string_size]; // for swap
int max_index; // index of max value
for (int rightmost=size-1; rightmost>0; rightmost--){
// find the largest item
max_index = 0;
for(int current=1; current<=rightmost; current++)
if (strcmp(data[current], data[max_index]) >0)
max_index = current;
// swap with last item if necessary
if(strcmp(data[max_index], data[rightmost])>0){
strcpy(temp,data[max_index]); // swap
strcpy(data[max_index],data[rightmost]);
strcpy(data[rightmost], temp);
for (int index=0; index< size; index++)
cout << data[index] << " ";
cout<<endl;
}
}
}
// Sort an array of strings in ascending order
void bubble(char data[][string_size], // in/output:array
int size){ // input: array size
char temp[string_size]; // for swap
for(int outer=size-1 ; outer>0; outer--){
for (int inner=0; inner < outer; inner++) {
// traverse the nested loops
if ( strcmp(data[inner], data[inner+1])>0 )
{
// swap current element with next
// if the current element is greater
strcpy(temp, data[inner]);
strcpy(data[inner], data[inner+1]);
strcpy(data[inner+1], temp);
for (int index=0; index< size; index++)
cout << data[index] << " ";
cout<<endl;
}
} // inner for loop
} // outer for loop
}

More Related Content

PPTX
1 pulling out the gcf and the grouping method xc
DOCX
Correlated update vs merge
PDF
Read data from Excel spreadsheets into R
PDF
Passing Parameters using File and Command Line
PDF
Merging tables using R
PDF
Apache Pig Relational Operators - II
PDF
Immutability, and how to do it in JavaScripts
PDF
Apache PIG Relational Operations
1 pulling out the gcf and the grouping method xc
Correlated update vs merge
Read data from Excel spreadsheets into R
Passing Parameters using File and Command Line
Merging tables using R
Apache Pig Relational Operators - II
Immutability, and how to do it in JavaScripts
Apache PIG Relational Operations

What's hot (15)

PDF
Flight Data Analysis
PDF
SAS and R Code for Basic Statistics
PDF
Data manipulation on r
DOCX
Clips basics how to make expert system in clips | facts adding | rules makin...
PDF
The Ring programming language version 1.2 book - Part 10 of 84
PDF
The Ring programming language version 1.2 book - Part 12 of 84
DOCX
Below is a given ArrayList class and Main class Your Dreams Our Mission/tuto...
PDF
The Ring programming language version 1.2 book - Part 11 of 84
PPTX
Python Homework Help
PDF
The Ring programming language version 1.2 book - Part 9 of 84
PPT
Code rule
PDF
6. Generics. Collections. Streams
PPTX
Pemrograman Terstruktur 4
PDF
R code descriptive statistics of phenotypic data by Avjinder Kaler
PDF
Chapter 8 advanced sorting and hashing for print
Flight Data Analysis
SAS and R Code for Basic Statistics
Data manipulation on r
Clips basics how to make expert system in clips | facts adding | rules makin...
The Ring programming language version 1.2 book - Part 10 of 84
The Ring programming language version 1.2 book - Part 12 of 84
Below is a given ArrayList class and Main class Your Dreams Our Mission/tuto...
The Ring programming language version 1.2 book - Part 11 of 84
Python Homework Help
The Ring programming language version 1.2 book - Part 9 of 84
Code rule
6. Generics. Collections. Streams
Pemrograman Terstruktur 4
R code descriptive statistics of phenotypic data by Avjinder Kaler
Chapter 8 advanced sorting and hashing for print
Ad

Similar to Sorting (20)

PPT
PDF
L 14-ct1120
PPTX
Unit 7 sorting
PPTX
Programming Fundamentals lecture-14.pptx
PPTX
Data Structures - Lecture 8 [Sorting Algorithms]
PPT
Sorting algorithms
PDF
Chapter Two.pdf
PPTX
Unit vii sorting
PPT
search_sort search_sortsearch_sort search_sortsearch_sortsearch_sortsearch_sort
PPT
search_sort_v1.pptgghghhhggggjjjjjjllllllllvbbbbbcfdsdfffg
PPT
search_sort Search sortSearch sortSearch sortSearch sort
PPTX
2.Problem Solving Techniques and Data Structures.pptx
PPT
C Language Unit-6
PDF
465659705-15-DSA-PPT-Sorting-Techniques-I.pdf
PPT
Unit6 jwfiles
PPTX
Merge radix-sort-algorithm
PPTX
Merge radix-sort-algorithm
PPT
Sorting algorithums > Data Structures & Algorithums
PPTX
Searching and sorting Techniques in Data structures
PPTX
Array sorting
L 14-ct1120
Unit 7 sorting
Programming Fundamentals lecture-14.pptx
Data Structures - Lecture 8 [Sorting Algorithms]
Sorting algorithms
Chapter Two.pdf
Unit vii sorting
search_sort search_sortsearch_sort search_sortsearch_sortsearch_sortsearch_sort
search_sort_v1.pptgghghhhggggjjjjjjllllllllvbbbbbcfdsdfffg
search_sort Search sortSearch sortSearch sortSearch sort
2.Problem Solving Techniques and Data Structures.pptx
C Language Unit-6
465659705-15-DSA-PPT-Sorting-Techniques-I.pdf
Unit6 jwfiles
Merge radix-sort-algorithm
Merge radix-sort-algorithm
Sorting algorithums > Data Structures & Algorithums
Searching and sorting Techniques in Data structures
Array sorting
Ad

Recently uploaded (20)

PDF
OBE - B.A.(HON'S) IN INTERIOR ARCHITECTURE -Ar.MOHIUDDIN.pdf
PDF
Updated Idioms and Phrasal Verbs in English subject
PPTX
UNIT III MENTAL HEALTH NURSING ASSESSMENT
PDF
01-Introduction-to-Information-Management.pdf
DOC
Soft-furnishing-By-Architect-A.F.M.Mohiuddin-Akhand.doc
PDF
GENETICS IN BIOLOGY IN SECONDARY LEVEL FORM 3
PDF
Microbial disease of the cardiovascular and lymphatic systems
PDF
2.FourierTransform-ShortQuestionswithAnswers.pdf
PDF
Supply Chain Operations Speaking Notes -ICLT Program
PPTX
Microbial diseases, their pathogenesis and prophylaxis
PDF
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
PDF
ChatGPT for Dummies - Pam Baker Ccesa007.pdf
PDF
STATICS OF THE RIGID BODIES Hibbelers.pdf
PDF
RMMM.pdf make it easy to upload and study
PDF
Yogi Goddess Pres Conference Studio Updates
PPTX
Cell Types and Its function , kingdom of life
PPTX
Orientation - ARALprogram of Deped to the Parents.pptx
PPTX
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
PDF
Trump Administration's workforce development strategy
PPTX
master seminar digital applications in india
OBE - B.A.(HON'S) IN INTERIOR ARCHITECTURE -Ar.MOHIUDDIN.pdf
Updated Idioms and Phrasal Verbs in English subject
UNIT III MENTAL HEALTH NURSING ASSESSMENT
01-Introduction-to-Information-Management.pdf
Soft-furnishing-By-Architect-A.F.M.Mohiuddin-Akhand.doc
GENETICS IN BIOLOGY IN SECONDARY LEVEL FORM 3
Microbial disease of the cardiovascular and lymphatic systems
2.FourierTransform-ShortQuestionswithAnswers.pdf
Supply Chain Operations Speaking Notes -ICLT Program
Microbial diseases, their pathogenesis and prophylaxis
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
ChatGPT for Dummies - Pam Baker Ccesa007.pdf
STATICS OF THE RIGID BODIES Hibbelers.pdf
RMMM.pdf make it easy to upload and study
Yogi Goddess Pres Conference Studio Updates
Cell Types and Its function , kingdom of life
Orientation - ARALprogram of Deped to the Parents.pptx
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
Trump Administration's workforce development strategy
master seminar digital applications in india

Sorting

  • 2. COMP102 Prog. Fundamentals. Sorting I/ Slide 2 Sorting  To arrange a set of items in sequence.  It is estimated that 25~50% of all computing power is used for sorting activities.  Possible reasons:  Many applications require sorting;  Many applications perform sorting when they don't have to;  Many applications use inefficient sorting algorithms.
  • 3. COMP102 Prog. Fundamentals. Sorting I/ Slide 3 Sorting Applications  To prepare a list of student ID, names, and scores in a table (sorted by ID or name) for easy checking.  To prepare a list of scores before letter grade assignment.  To produce a list of horses after a race (sorted by the finishing times) for payoff calculation.  To prepare an originally unsorted array for ordered binary searching.
  • 4. COMP102 Prog. Fundamentals. Sorting I/ Slide 4 Some Sorting Methods  Selection sort  Bubble sort  Shell sort (a simple but faster sorting method than above; see p.331 of Numerical Recipes in C, 2nd ed., by William H. Press et al, Cambridge University Press, 1992)  Quick sort (a very efficient sorting method for most applications; p.332-336, ibid.)
  • 5. COMP102 Prog. Fundamentals. Sorting I/ Slide 5 Ex. 1A: Selection Sort  Selection sort performs sorting by repeatedly putting the largest element in the unsorted portion of the array to the end of this unsorted portion until the whole array is sorted.  It is similar to the way that many people do their sorting.
  • 6. COMP102 Prog. Fundamentals. Sorting I/ Slide 6 Ex. 1A: Selection Sort  Algorithm 1. Define the entire array as the unsorted portion of the array 2. While the unsorted portion of the array has more than one element:  Find its largest element.  Swap with last element (assuming their values are different).  Reduce the size of the unsorted portion of the array by 1.
  • 7. Before sorting 14 2 10 5 1 3 17 7 After pass 1 14 2 10 5 1 3 7 17 After pass 2 7 2 10 5 1 3 14 17 After pass 3 7 2 3 5 1 10 14 17 After pass 4 1 2 3 5 7 10 14 17
  • 8. // Sort array of integers in ascending order void select(int data[], // in/output: array int size){ // input: array size int temp; // for swap int max_index; // index of max value for (int rightmost=size-1; rightmost>0; rightmost--){ //find the largest item in the unsorted portion //rightmost is the end point of the unsorted part of array max_index = 0; //points the largest element for ( int current=1; current<=rightmost; current++) if (data[current] > data[max_index]) max_index = current; //swap the largest item with last item if necessary if (data[max_index] > data[rightmost]){ temp = data[max_index]; // swap data[max_index] = data[rightmost]; data[rightmost] = temp; } }}
  • 9. const int array_size = 8; int main() { int list[array_size] = {14, 2, 10, 5, 1, 3, 17, 7}; int index, ans; cout << "Before sorting: "; for (index = 0; index<array_size; index++) cout << list[index] <<" "; cout << endl; cout << "Enter sorting method 1(select), 2(bubble):"; cin >> ans; if (ans == 1) select(list, array_size); else bubble(list, array_size); cout << endl << "After sorting: "; for (index = 0; index<array_size; index++) cout << list[index] <<" "; cout << endl; return 0; }
  • 10. COMP102 Prog. Fundamentals. Sorting I/ Slide 10 Ex. 1B: Bubble Sort  Bubble sort examines the array from start to finish, comparing elements as it goes.  Any time it finds a larger element before a smaller element, it swaps the two.  In this way, the larger elements are passed towards the end.  The largest element of the array therefore "bubbles" to the end of the array.  Then it repeats the process for the unsorted portion of the array until the whole array is sorted.
  • 11. COMP102 Prog. Fundamentals. Sorting I/ Slide 11 Ex. 1A: Bubble Sort  Bubble sort works on the same general principle as shaking a soft drink bottle.  Right after shaking, the contents are a mixture of bubbles and soft drink, distributed randomly.  Because bubbles are lighter than the soft drink, they rise to the surface, displacing the soft drink downwards.  This is how bubble sort got its name, because the smaller elements "float" to the top, while the larger elements "sink" to the bottom.
  • 12. COMP102 Prog. Fundamentals. Sorting I/ Slide 12 Ex. 1B: Bubble Sort  Algorithm Define the entire array as the unsorted portion of the array. While the unsorted portion of the array has more than one element: 1. For every element in the unsorted portion, swap with the next neighbor if it is larger than the neighbor. 2. Reduce the size of the unsorted portion of the array by 1.
  • 13. Before sorting 14 2 10 5 1 3 17 7 outer=7, inner=0 2 14 10 5 1 3 17 7 outer=7, inner=1 2 10 14 5 1 3 17 7 outer=7, inner=2 2 10 5 14 1 3 17 7 outer=7, inner=3 2 10 5 1 14 3 17 7 outer=7, inner=4 2 10 5 1 3 14 17 7 outer=7, inner=6 2 10 5 1 3 14 7 17 outer=6, inner=1 2 5 10 1 3 14 7 17 outer=6, inner=2 2 5 1 10 3 14 7 17 outer=6, inner=3 2 5 1 3 10 14 7 17 outer=6, inner=5 2 5 1 3 10 7 14 17 outer=5, inner=1 2 1 5 3 10 7 14 17 outer=5, inner=2 2 1 3 5 10 7 14 17 outer=5, inner=4 2 1 3 5 7 10 14 17 outer=4, inner=0 1 2 3 5 7 10 14 17 --- outer=1, inner=0 1 2 3 5 7 10 14 17
  • 14. //Example1b: Bobble sort // Sort an array of integers in ascending order void bubble(int data[], // in/output: array int size){ // input: array size int temp; // for swap for(int outer=size-1; outer > 0; outer--){ for (int inner=0; inner < outer; inner++) { // traverse the nested loops if ( data[inner] > data[inner+1] ) { // swap current element with next // if the current element is greater temp = data[inner]; data[inner] = data[inner+1]; data[inner+1] = temp; } } // inner for loop } // outer for loop }
  • 15. const int array_size = 12, string_size = 11; int main() { char month[array_size][string_size] = {"January", "February","March","April","May","June","July","August", "September", "October", "November", "December"}; int index, ans; cout << "Enter sorting method 1(select), 2(bubble): "; cin >> ans; if (ans == 1) select(month, array_size); else bubble(month, array_size); cout << endl << "After sorting: "; for (index = 0; index<array_size; index++) cout << month[index] <<" "; cout << endl; return 0; }
  • 16. 0 1 2 3 4 5 6 7 8 9 10 month[0] J a n u a r y 0 month[1] F e b r u a r y 0 month[2] M a r c h 0 month[3] A p r i l 0 month[4] M a y 0 month[5] J u n e 0 month[6] J u l y 0 month[7] A u g u s t 0 month[8] S e p t e m b e r 0 month[9] O c t c b e r 0 month[10] N o v e m b e r 0 month[11] D e c e m b e r 0
  • 17. // Sort array of strings in ascending order void select(char data[][string_size], // in/output: array int size){ // input: array size char temp[string_size]; // for swap int max_index; // index of max value for (int rightmost=size-1; rightmost>0; rightmost--){ // find the largest item max_index = 0; for(int current=1; current<=rightmost; current++) if (strcmp(data[current], data[max_index]) >0) max_index = current; // swap with last item if necessary if(strcmp(data[max_index], data[rightmost])>0){ strcpy(temp,data[max_index]); // swap strcpy(data[max_index],data[rightmost]); strcpy(data[rightmost], temp); for (int index=0; index< size; index++) cout << data[index] << " "; cout<<endl; } } }
  • 18. // Sort an array of strings in ascending order void bubble(char data[][string_size], // in/output:array int size){ // input: array size char temp[string_size]; // for swap for(int outer=size-1 ; outer>0; outer--){ for (int inner=0; inner < outer; inner++) { // traverse the nested loops if ( strcmp(data[inner], data[inner+1])>0 ) { // swap current element with next // if the current element is greater strcpy(temp, data[inner]); strcpy(data[inner], data[inner+1]); strcpy(data[inner+1], temp); for (int index=0; index< size; index++) cout << data[index] << " "; cout<<endl; } } // inner for loop } // outer for loop }