Research Article December 2013 Joshi et al. Page 61 International Journal of Emerging Research in Management &Technology ISSN: 2278-9359 (Volume-2, Issue-12) Analysis of Non-Comparison Based Sorting Algorithms: A Review Rohit Joshi, Govind Singh Panwar, Preeti Pathak Dept. of CSE, GEHU, Dehradun India Abstract – An algorithm is combination of sequence of finite steps to solve a particular problem. Any algorithm can be analysed in terms of time and space. Sorting algorithms involves rearranging information in a certain order, either in ascending order or descending order with numerical data and alphabetically with character data. Now a days, there are a number of programming applications used in computer science which apply sorting techniques to solve a problem. Non-comparison based sorting algorithms make assumptions about the input. All elements of the input are required to fall within a range of constant length in order to ensure linear time complexity. On the other hand comparison based sorting algorithms make no assumption about the input and are able to address any case. The goal of this paper is too reviewed on different non-comparison based sorting algorithms. In this paper we check the performance and comparison of all non-comparison based sorting algorithm for a given input sequence. Keywords - bucket sort, counting sort, radix sort, MSD radix sort, LSD radix sort. I. INTRODUCTION One of the fundamental problems of computer science is ordering a list of items. There is a plethora of solutions to this problem, known as sorting algorithms. Researchers have attempted in past to develop algorithms efficiently in terms of optimum memory requirement and minimum time requirement i.e., Time or Space Complexities. Algorithmic complexity of sorting algorithm is generally written in a form known as Big-O notation, where the O represents the complexity of the algorithm and a value n represents the size of the set the algorithm is run against. For example, O(n) means that an algorithm has a linear complexity [5]. Together with searching, sorting is probably the most used algorithm in Computing, and one in which, statistically, computers spend around half of the time performing All the comparison based sorting algorithms use comparisons to determine the relative order of elements. e.g., insertion sort, merge sort, quick sort, heap sort. The best worst-case running time that we’ve seen in [1], for comparison sorting is O(nlgn). There are sorting algorithms that run faster than O(nlgn) time but they require special assumptions about the input sequence to be sort. Examples of sorting algorithms that run in linear time are counting sort, radix sort and bucket sort. Counting sort and radix sort assume that the input consists of integers in a small range. Whereas, bucket sort assumes that the input is generated by a random process that distributes elements uniformly over the interval. Since we already know that the comparison-based sorting algorithm can do sorting in Ω(nlgn), it is not difficult to figure out that linear-time sorting algorithms use operations other than comparisons to determine the sorted order. II. SORTING IN LINEAR TIME A. Comparison sort: Lower bound: (nlgn). B. Non comparison sort: Bucket sort, counting sort, radix sort They are possible in linear time (under certain assumption). III. NON-COMPARISON SORT A. Bucket sort: Bucket Sort is a sorting method that subdivides the given data into various buckets depending on certain characteristic order, thus partially sorting them in the first go. Then depending on the number of entities in each bucket, it employs either bucket sort again or some other ad hoc sort. Bucket sort runs in linear time on an average. Bucket sort is stable. It assumes that the input is generated by a random process that distributes elements uniformly over the interval 1 to m. Analysis of BUCKET-SORT(A): 1. n length[A] Ω(1) 2. for i 1 to n O(n) 3. do insert A[i] into bucket B[nA[i]] Ω(1) (i.e. total O(n)) 4. for i 0 to n-1 O(n) 5. do sort bucket B[i] with insertion sort O(n i 2 ) (∑ i=0 n-1 O(n i 2 )) 6. Concatenate bucket B[0],B[1],…,B[n-1] O(n)