Bubble Sort: an Archaeological Algorithmic Analysis
Total Page:16
File Type:pdf, Size:1020Kb
Load more
Recommended publications
-
CS 758/858: Algorithms
CS 758/858: Algorithms ■ COVID Prof. Wheeler Ruml Algorithms TA Sumanta Kashyapi This Class Complexity http://www.cs.unh.edu/~ruml/cs758 4 handouts: course info, schedule, slides, asst 1 2 online handouts: programming tips, formulas 1 physical sign-up sheet/laptop (for grades, piazza) Wheeler Ruml (UNH) Class 1, CS 758 – 1 / 25 COVID ■ COVID Algorithms This Class Complexity ■ check your Wildcat Pass before coming to campus ■ if you have concerns, let me know Wheeler Ruml (UNH) Class 1, CS 758 – 2 / 25 ■ COVID Algorithms ■ Algorithms Today ■ Definition ■ Why? ■ The Word ■ The Founder This Class Complexity Algorithms Wheeler Ruml (UNH) Class 1, CS 758 – 3 / 25 Algorithms Today ■ ■ COVID web: search, caching, crypto Algorithms ■ networking: routing, synchronization, failover ■ Algorithms Today ■ machine learning: data mining, recommendation, prediction ■ Definition ■ Why? ■ bioinformatics: alignment, matching, clustering ■ The Word ■ ■ The Founder hardware: design, simulation, verification ■ This Class business: allocation, planning, scheduling Complexity ■ AI: robotics, games Wheeler Ruml (UNH) Class 1, CS 758 – 4 / 25 Definition ■ COVID Algorithm Algorithms ■ precisely defined ■ Algorithms Today ■ Definition ■ mechanical steps ■ Why? ■ ■ The Word terminates ■ The Founder ■ input and related output This Class Complexity What might we want to know about it? Wheeler Ruml (UNH) Class 1, CS 758 – 5 / 25 Why? ■ ■ COVID Computer scientist 6= programmer Algorithms ◆ ■ Algorithms Today understand program behavior ■ Definition ◆ have confidence in results, performance ■ Why? ■ The Word ◆ know when optimality is abandoned ■ The Founder ◆ solve ‘impossible’ problems This Class ◆ sets you apart (eg, Amazon.com) Complexity ■ CPUs aren’t getting faster ■ Devices are getting smaller ■ Software is the differentiator ■ ‘Software is eating the world’ — Marc Andreessen, 2011 ■ Everything is computation Wheeler Ruml (UNH) Class 1, CS 758 – 6 / 25 The Word: Ab¯u‘Abdall¯ah Muh.ammad ibn M¯us¯aal-Khw¯arizm¯ı ■ COVID 780-850 AD Algorithms Born in Uzbekistan, ■ Algorithms Today worked in Baghdad. -
Data Structures & Algorithms
DATA STRUCTURES & ALGORITHMS Tutorial 6 Questions SORTING ALGORITHMS Required Questions Question 1. Many operations can be performed faster on sorted than on unsorted data. For which of the following operations is this the case? a. checking whether one word is an anagram of another word, e.g., plum and lump b. findin the minimum value. c. computing an average of values d. finding the middle value (the median) e. finding the value that appears most frequently in the data Question 2. In which case, the following sorting algorithm is fastest/slowest and what is the complexity in that case? Explain. a. insertion sort b. selection sort c. bubble sort d. quick sort Question 3. Consider the sequence of integers S = {5, 8, 2, 4, 3, 6, 1, 7} For each of the following sorting algorithms, indicate the sequence S after executing each step of the algorithm as it sorts this sequence: a. insertion sort b. selection sort c. heap sort d. bubble sort e. merge sort Question 4. Consider the sequence of integers 1 T = {1, 9, 2, 6, 4, 8, 0, 7} Indicate the sequence T after executing each step of the Cocktail sort algorithm (see Appendix) as it sorts this sequence. Advanced Questions Question 5. A variant of the bubble sorting algorithm is the so-called odd-even transposition sort . Like bubble sort, this algorithm a total of n-1 passes through the array. Each pass consists of two phases: The first phase compares array[i] with array[i+1] and swaps them if necessary for all the odd values of of i. -
13 Basic Sorting Algorithms
Concise Notes on Data Structures and Algorithms Basic Sorting Algorithms 13 Basic Sorting Algorithms 13.1 Introduction Sorting is one of the most fundamental and important data processing tasks. Sorting algorithm: An algorithm that rearranges records in lists so that they follow some well-defined ordering relation on values of keys in each record. An internal sorting algorithm works on lists in main memory, while an external sorting algorithm works on lists stored in files. Some sorting algorithms work much better as internal sorts than external sorts, but some work well in both contexts. A sorting algorithm is stable if it preserves the original order of records with equal keys. Many sorting algorithms have been invented; in this chapter we will consider the simplest sorting algorithms. In our discussion in this chapter, all measures of input size are the length of the sorted lists (arrays in the sample code), and the basic operation counted is comparison of list elements (also called keys). 13.2 Bubble Sort One of the oldest sorting algorithms is bubble sort. The idea behind it is to make repeated passes through the list from beginning to end, comparing adjacent elements and swapping any that are out of order. After the first pass, the largest element will have been moved to the end of the list; after the second pass, the second largest will have been moved to the penultimate position; and so forth. The idea is that large values “bubble up” to the top of the list on each pass. A Ruby implementation of bubble sort appears in Figure 1. -
Fall, 2016 Lab #3
Texas Christian University CoSc 20803 - Fall, 2016 Lab #3 Points: 100 points Language: Java Due Date: Midnight, Thursday, Nov 17, 2016 (complete Java project and manually-generated Excel spreadsheet ZIPped together and submitted with TURNIN). Purpose: The purpose of this assignment is to allow you to evaluate the performance of several different sorting algorithms on data in various degrees of disorder. Processing: You should implement the following sorting algorithms and gather statistics as noted below: Method #1 Method #2 Method #3 Method #4 Bubblesort Cocktail Shaker Sort Shell Sort Quick Sort (pp. 230-232) (discussed in class) (discussed in class) (pp. 232-236) Input: Three input data sets will be provided (each of which contains 5000, 4-byte alphanumeric keys). The files are: Ascending.dat, Descending.dat, and Random.dat (obtainable from the CoSc Department’s class website: GUI: For this lab you should develop a manual data collection program that employs a VERY SIMPLE graphical user interface. Your program should accommodate input from the user specifying: a) the integer number of records to be sorted, b) the name of the input file to be used as the source of data (via a JFileChooser()), and c) the sorting method to use. Your program should allow the sorting methods listed above to be performed. Statistics: You should sort, ascendingly, alphanumeric keys in each of the three data files provided, keeping statistics for each file and for each sort method. Keep track of: (i) the number of key compares (Ki:Kj) and (ii) the number of key moves (e.g., Ki <--- Kj). -
Sorting Partnership Unless You Sign Up! Brian Curless • Homework #5 Will Be Ready After Class, Spring 2008 Due in a Week
Announcements (5/9/08) • Project 3 is now assigned. CSE 326: Data Structures • Partnerships due by 3pm – We will not assume you are in a Sorting partnership unless you sign up! Brian Curless • Homework #5 will be ready after class, Spring 2008 due in a week. • Reading for this lecture: Chapter 7. 2 Sorting Consistent Ordering • Input – an array A of data records • The comparison function must provide a – a key value in each data record consistent ordering on the set of possible keys – You can compare any two keys and get back an – a comparison function which imposes a indication of a < b, a > b, or a = b (trichotomy) consistent ordering on the keys – The comparison functions must be consistent • Output • If compare(a,b) says a<b, then compare(b,a) must say b>a • If says a=b, then must say b=a – reorganize the elements of A such that compare(a,b) compare(b,a) • If compare(a,b) says a=b, then equals(a,b) and equals(b,a) • For any i and j, if i < j then A[i] ≤ A[j] must say a=b 3 4 Why Sort? Space • How much space does the sorting • Allows binary search of an N-element algorithm require in order to sort the array in O(log N) time collection of items? • Allows O(1) time access to kth largest – Is copying needed? element in the array for any k • In-place sorting algorithms: no copying or • Sorting algorithms are among the most at most O(1) additional temp space. -
Sorting Algorithm 1 Sorting Algorithm
Sorting algorithm 1 Sorting algorithm In computer science, a sorting algorithm is an algorithm that puts elements of a list in a certain order. The most-used orders are numerical order and lexicographical order. Efficient sorting is important for optimizing the use of other algorithms (such as search and merge algorithms) that require sorted lists to work correctly; it is also often useful for canonicalizing data and for producing human-readable output. More formally, the output must satisfy two conditions: 1. The output is in nondecreasing order (each element is no smaller than the previous element according to the desired total order); 2. The output is a permutation, or reordering, of the input. Since the dawn of computing, the sorting problem has attracted a great deal of research, perhaps due to the complexity of solving it efficiently despite its simple, familiar statement. For example, bubble sort was analyzed as early as 1956.[1] Although many consider it a solved problem, useful new sorting algorithms are still being invented (for example, library sort was first published in 2004). Sorting algorithms are prevalent in introductory computer science classes, where the abundance of algorithms for the problem provides a gentle introduction to a variety of core algorithm concepts, such as big O notation, divide and conquer algorithms, data structures, randomized algorithms, best, worst and average case analysis, time-space tradeoffs, and lower bounds. Classification Sorting algorithms used in computer science are often classified by: • Computational complexity (worst, average and best behaviour) of element comparisons in terms of the size of the list . For typical sorting algorithms good behavior is and bad behavior is . -
Sorting Algorithms
Sorting Algorithms Chapter 12 Our first sort: Selection Sort • General Idea: min SORTED UNSORTED SORTED UNSORTED What is the invariant of this sort? Selection Sort • Let A be an array of n ints, and we wish to sort these keys in non-decreasing order. • Algorithm: for i = 0 to n-2 do find j, i < j < n-1, such that A[j] < A[k], k, i < k < n-1. swap A[j] with A[i] • This algorithm works in place, meaning it uses its own storage to perform the sort. Selection Sort Example 66 44 99 55 11 88 22 77 33 11 44 99 55 66 88 22 77 33 11 22 99 55 66 88 44 77 33 11 22 33 55 66 88 44 77 99 11 22 33 44 66 88 55 77 99 11 22 33 44 55 88 66 77 99 11 22 33 44 55 66 88 77 99 11 22 33 44 55 66 77 88 99 11 22 33 44 55 66 77 88 99 Selection Sort public static void sort (int[] data, int n) { int i,j,minLocation; for (i=0; i<=n-2; i++) { minLocation = i; for (j=i+1; j<=n-1; j++) if (data[j] < data[minLocation]) minLocation = j; swap(data, minLocation, i); } } Run time analysis • Worst Case: Search for 1st min: n-1 comparisons Search for 2nd min: n-2 comparisons ... Search for 2nd-to-last min: 1 comparison Total comparisons: (n-1) + (n-2) + ... + 1 = O(n2) • Average Case and Best Case: O(n2) also! (Why?) Selection Sort (another algorithm) public static void sort (int[] data, int n) { int i, j; for (i=0; i<=n-2; i++) for (j=i+1; j<=n-1; j++) if (data[j] < data[i]) swap(data, i, j); } Is this any better? Insertion Sort • General Idea: SORTED UNSORTED SORTED UNSORTED What is the invariant of this sort? Insertion Sort • Let A be an array of n ints, and we wish to sort these keys in non-decreasing order. -
Sorting Networks
Sorting Networks Uri Zwick Tel Aviv University May 2015 Comparators 푥 min(푥, 푦) 푦 max(푥, 푦) 푥 min(푥, 푦) 푦 max(푥, 푦) Can we use comparators to build efficient sorting networks? Comparator networks A comparator network is a network composed of comparators. There are 푛 input wires, each feeding a single comparator. Each output of a comparator is either an output wire, or feeds a single comparator. The network must be acyclic. Number of output wires must also be 푛. “Standard form” Exercise: Show that any comparator network is equivalent to a network in standard form. A simple sorting network 5 comparators 3 levels Insertion sort 푆표푟푡(푛) Selection/bubble sort 푆표푟푡(푛) Selection/bubble Sort 푛 푛−1 Size = Depth = 2푛 − 1 2 Exercise: Any sorting network that only compares 푛 푛−1 adjacent lines must be of size at least 2 Exercise: Prove that the network on the next slide, whose depth is 푛, is a sorting network Odd-Even Transposition Sort 푛 푛−1 Size = Depth = 푛 2 The 0-1 principle Theorem: If a network sort all 0-1 inputs, then it sort all inputs The 0-1 principle Lemma: Let 푓 be a monotone non-decreasing function. Then, if a network maps 푥1, 푥2, . , 푥푛 to 푦1, 푦2, . , 푦푛, then it maps 푓(푥1), 푓(푥2), . , 푓(푥푛) to 푓(푦1), 푓(푦2), . , 푓(푦푛) Proof: By induction on the number of comparisons using 푓 min 푎, 푏 = min(푓 푎 , 푓 푏 ) 푓 max 푎, 푏 = max(푓 푎 , 푓 푏 ) The 0-1 principle Proof: Suppose that a network is not a sorting network. -
Sorting Algorithm 1 Sorting Algorithm
Sorting algorithm 1 Sorting algorithm A sorting algorithm is an algorithm that puts elements of a list in a certain order. The most-used orders are numerical order and lexicographical order. Efficient sorting is important for optimizing the use of other algorithms (such as search and merge algorithms) which require input data to be in sorted lists; it is also often useful for canonicalizing data and for producing human-readable output. More formally, the output must satisfy two conditions: 1. The output is in nondecreasing order (each element is no smaller than the previous element according to the desired total order); 2. The output is a permutation (reordering) of the input. Since the dawn of computing, the sorting problem has attracted a great deal of research, perhaps due to the complexity of solving it efficiently despite its simple, familiar statement. For example, bubble sort was analyzed as early as 1956.[1] Although many consider it a solved problem, useful new sorting algorithms are still being invented (for example, library sort was first published in 2006). Sorting algorithms are prevalent in introductory computer science classes, where the abundance of algorithms for the problem provides a gentle introduction to a variety of core algorithm concepts, such as big O notation, divide and conquer algorithms, data structures, randomized algorithms, best, worst and average case analysis, time-space tradeoffs, and upper and lower bounds. Classification Sorting algorithms are often classified by: • Computational complexity (worst, average and best behavior) of element comparisons in terms of the size of the list (n). For typical serial sorting algorithms good behavior is O(n log n), with parallel sort in O(log2 n), and bad behavior is O(n2). -
Sorting Algorithms
International Research Journal of Engineering and Technology (IRJET) e-ISSN: 2395 -0056 Volume: 03 Issue: 02 | Feb-2016 www.irjet.net p-ISSN: 2395-0072 SORTING ALGORITHMS Neelam Yadav*, Sangeeta Kumari** *HOD in CSE Dept, DAV college, Kanina **Lecture in CSE Dept, DAV College, Kanina --------------------------------------------------------------------------------------------------------------------------------------------------------------- Abstract: This paper presents different type of sorting that Memory usage are present in data structure for example quick, insertion, Stability: stable sorting algorithms maintains the relative heap and merge. Each algorithm tries to solve sorting order if records with equal keys. problem using different formats. These four algorithms have their own pros and cons. This pa per presents a detailed study Sorting algorithms are sometimes characterized by big O of how these algorithm works and compares them on the notation. This notation indicates performances of basis of various parameters to reach a conclusion. algorithms and the amount of time that the algorithms take. The different cases that are popular in sorting Keywords: Quick Sort, Selection Sort, Insertion Sort, Bubble algorithms are:- Sort, Shell Sort, Cocktail Sort, Comparison, Other Performance Parameters. - O(n) is fair, graph increases in the smooth path. 1. INTRODUCTION - O(n^2): this is inefficient because a small increase in input increases the graph tremendously. A sorting algorithm is an algorithm that arranges the elements of a list in a certain order; the order can be - O(n log n): this is considered as efficient, because it increasing or decreasing. Till now many sorting algorithm shows the slower pace increase in the graph as the size of has been discovered. Some of them were comparison based array or data is increased. -
PART III Basic Data Types
PART III Basic Data Types 186 Chapter 7 Using Numeric Types Two kinds of number representations, integer and floating point, are supported by C. The various integer types in C provide exact representations of the mathematical concept of “integer” but can represent values in only a limited range. The floating-point types in C are used to represent the mathematical type “real.” They can represent real numbers over a very large range of magnitudes, but each number generally is an approximation, using a limited number of decimal places of precision. In this chapter, we define and explain the integer and floating-point data types built into C and show how to write their literal forms and I/O formats. We discuss the range of values that can be stored in each type, how to perform reliable arithmetic computations with these values, what happens when a number is converted (or cast) from one type to another, and how to choose the proper data type for a problem. We would like to think of numbers as integer values, not as patterns of bits in memory. This is possible most of the time when working with C because the language lets us name the numbers and compute with them symbolically. Details such as the length (in bytes) of the number and the arrangement of bits in those bytes can be ignored most of the time. However, inside the computer, the numbers are just bit patterns. This becomes evident when conditions such as integer overflow occur and a “correct” formula produces a wrong and meaningless answer. -
Searching and Sorting Charlie Li 2019-02-16 Content
Searching and sorting Charlie Li 2019-02-16 Content • Searching • Linear Search • Binary Search • Ternary Search • Sorting • Selection Sort, Insertion Sort, Bubble Sort • Quick Sort, Merge Sort • Counting Sort, Radix Sort Searching • Usage • Generally, it is used to find any root or optimal value of some function f(x). • In particular, it can be used to locate a certain object or optimal value in an array Searching • 4 types of questions we can ask • For array, • Find the position of certain object in the array • Find the optimal (e.g. smallest or largest) element in the array • For function f(x), • Find the root of f(x) = y • Find the optimal (e.g. smallest or largest) point of f(x) Linear Search • Aka sequential search, dictionary search • The is one of the naïve ways to locate certain object or to find an optimal element in an array (and even for linked-list (appears in DS(I))) Linear Search • Example: • Find any 3 in the following array Index 0 1 2 3 4 5 Value 1 5 1 3 4 2 Not 3 Not 3 Not 3 Found Linear Search • Example: • Find any 0 in the following array Index 0 1 2 3 4 5 Value 1 5 1 3 4 2 Not 0 Not 0 Not 0 Not 0 Not 0 Not 0 Not Found Linear Search • For your reference, the code looks like this: • The idea is similar to find the optimal value. Linear Search • One can easily see that the above algorithm is always true without any restriction on the array a.