Main Menu

Deitel Exersices
Downloads
Contact ME


 


Back


Links
CE Main Site
Sharif University
Wikipedia
2Del
PHP
Javascript





    

In the name of GOD


Deitel Exercise : 4.30

     (Bucket Sort) A Bucket sort begins with a single-subscripted array of positive integers to be sorted and a double-subscripted array of integers with rows subscripted from 0 to 9 and columns subscripted from 0 to n-1, where n is the number of values in the array to be sorted. each row of the double sorted array is referred to as a bucket. Write a function bucketSort that takes an integer array and the array size as arguments and perform as follows:


     a) Place each value of the single-subscripted array into a row of bucket array based on the value's ones digit. For example,      97 is placed in row 7, 3 is placed in row 3 and 100 is placed in row 0. This is called a "distribution pass."


     b) Loop through the bucket array row by row, and copy the values back to the original array. This is called a "gathering      pass." The new order of the preceding values in the single-subscripted array is 100, 3 and 97.


     c) Repeat this process for each subsequent digit position (tens, hundreds, thousands, etc.).


     On the second pass, 100 is placed in row 0, 3 is placed in row 0 (because 3 has no ten digit) and 97 is placed in row 9. After the gathering pass, the order of values in the single-subscripted array is 100, 3 and 97. On the third pass 100 is placed in row 1, 3 is placed in row zero and 97 is placed in row zero (after the 3). After the last gathering pass, the original array is now in sorted order.
     Note that the double-subscripted array of buckets is 10 times the size of the integer array being sorted. This sorting technique provides better performance than a bubble sort, but requires much more memory. The bubble sort requires space for only one additional element of data. This is an example of the space-time trade-off: The bucket sort uses more memory than the bubble sort, but performs better. This version of the bucket sort requires copying all data back to the original array on each pass. Another possibility is to create a second double-subscripted array and repeatedly swap the data between the two bucket arrays.