1 / 7

Sorting

Sorting. a very common operation. lots of application. (search in a database...). First :. Look at a simpler problem. add 6. Given a[0], a[1], ..., a[n-1]. reorder entries so that. a[0] <= a[1] <= ... <= a[n-1]. Suppose. a[0] <= a[1] <= ... <= a[i-1]. How to add a[i] so that.

sherryt
Télécharger la présentation

Sorting

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Sorting a very common operation lots of application (search in a database...) First: Look at a simpler problem add 6 Givena[0], a[1], ..., a[n-1] reorder entries so that a[0] <= a[1] <= ... <= a[n-1] Suppose a[0] <= a[1] <= ... <= a[i-1] How to add a[i] so that a[0] <= a[1] <= ... <= a[i] e.g : 1 4 5 8 9 6 1 4 5 6 8 9 142 O -1

  2. Insertion algorithm 1. Store a[i] in a temporary variable temp 2. Shift all elements > temp to the right by one position 3. Insert temp in the space created Requirement: a is sorted up through a[i-1] (if not, does NOT work) Outcome: after insertion, a is sorted up through a[i] 142 O -2

  3. Insert as a function compare to temp (= 6) j a[0] a[1] a[2] a[3] a[4] a[5] 1 4 5 8 9 6 5 1 4 5 8 9 9 1 4 5 8 9 9 4 1 4 5 8 8 9 3 1 4 5 8 8 9 element has been shifted Exit the loop: j is 3 void insert(int a[], int i) { int j, temp; temp = a[i]; for(j=i; j>0 && a[j-1]>temp; j--) a[j] = a[j-1]; a[j] = temp; } 142 O -3

  4. Insertion Sort Use insert start at 1 a[0] i a[1] a[2] a[3] a[4] initially 10 20 15 5 3 1 10 20 15 5 3 2 10 15 20 5 3 5 3 10 15 20 3 4 3 5 10 15 20 void sort (int a[], int dim) { int i; for(i=1; i<dim; i++) insert(a,i); } Example:sort(a,5) 142 O -4

  5. Bubble Sort dim - 2 i=0 dim - 3 0 i=0 i=0 Idea : • Compare a[i] and a[i+1] • if a[i] > a[i+1], • exchange a[i] and a[i+1] Loop over : 142 O -5

  6. a[0] a[1] a[2] a[3] a[4] i initially 20 drifts to the top (like a bubble in a liquid) a[0] a[1] a[2] a[3] a[4] Pass initially 10 10 20 20 15 15 5 5 3 3 1 0 10 10 20 15 15 5 3 5 20 3 1 2 10 10 5 15 3 20 15 5 20 3 5 10 2 3 15 3 5 10 15 20 3 20 4 3 10 3 5 15 10 5 15 3 20 20 Example: first pass of bubble sort (i=0 to 3) For all of the passes 142 O -6

  7. Efficiency is the key Check it out There are many sorting algorithms : to find the best algorithm, theory + practice Bubble Sort is less efficient than Insert Sort 142 O - 7

More Related