In C, you can use the built in qsort
command:
int compare( const void* a, const void* b) { int int_a = * ( (int*) a ); int int_b = * ( (int*) b ); if ( int_a == int_b ) return 0; else if ( int_a < int_b ) return -1; else return 1; } qsort( a, 6, sizeof(int), compare )
see: http://www.cplusplus.com/reference/clibrary/cstdlib/qsort/
To answer the second part of your question: an optimal (comparison based) sorting algorithm is one that runs with O(n log(n)) comparisons. There are several that have this property (including quick sort, merge sort, heap sort, etc.), but which one to use depends on your use case.
As a side note, you can sometime do better than O(n log(n)) if you know something about your data – see the wikipedia article on Radix Sort
Related Posts:
- Quicksort with Python
- how to implement quick sort algorithm in C++
- What is stability in sorting algorithms and why is it important?
- Quick Sort Vs Merge Sort
- Insertion Sort vs. Selection Sort
- Trying to understand max heapify
- Shortest possible depth of a leaf in decision tree (comparison sorting algorithm)
- Quicksort vs heapsort
- Exactly how many comparisons does merge sort make?
- Median of Medians in Java
- What is the proper equivalent of “while(true)” in plain C?
- Is there an O(n) integer sorting algorithm?
- An example of Best Case Scenario for Quick Sort (Need someone to check if my answer is correct)
- What is the difference between bucket sort and radix sort?
- About bubble sort vs merge sort
- In a triangulated isometric grid, what triangle is a given point in?
- What is a loop invariant?
- What is a loop invariant?
- What does O(log n) mean exactly?
- how to calculate binary search complexity
- When is it practical to use Depth-First Search (DFS) vs Breadth-First Search (BFS)? [closed]
- What does O(log n) mean exactly?
- What is Sliding Window Algorithm? Examples?
- What is the difference between tree depth and height?
- Python: maximum recursion depth exceeded while calling a Python object
- Why is the time complexity of both DFS and BFS O( V + E )
- Time complexity of a Priority Queue in C++
- C library function to perform sort
- Breadth First Search time complexity analysis
- Counting the sum of every nodes’ neighbors’ degrees?
- Time Complexity of the Kruskal Algorithm?
- Polynomial time and exponential time
- Difference and advantages between dijkstra & A star
- Best Case for Bubble Sort
- How to find the kth smallest element in the union of two sorted arrays?
- When will the worst case of Merge Sort occur?
- Big O, how do you calculate/approximate it?
- Performing Breadth First Search recursively
- Is Quicksort in-place or not?
- longest increasing subsequence(O(nlogn))
- O(n log n) vs O(n) — practical differences in time complexity
- When should I use Kruskal as opposed to Prim (and vice versa)?
- Python Weighted Random [duplicate]
- What is the meaning of “exclusive” and “inclusive” when describing number ranges?
- What’s a good algorithm to generate a maze?
- Intuition for perceptron weight update rule
- Easy: Solve T(n)=T(n-1)+n by Iteration Method
- What is tail call optimization?
- PacMan: what kinds of heuristics are mainly used?
- Big-oh vs big-theta
- Best case time complexity for selection sort
- Looking for algorithm finding euler path
- Trie complexity and searching
- What does this definition of contiguous subsequences mean?
- Is log(n!) = Θ(n·log(n))?
- Is complexity O(log(n)) equivalent to O(sqrt(n))?
- How to find maximum spanning tree?
- Algorithm to return all combinations of k elements from n
- How to calculate big-theta
- hash function for string
- What is the time complexity of while loops?
- Merge sort time and space complexity
- Intuitive explanation for why QuickSort is n log n?
- Calculate distance between two latitude-longitude points? (Haversine formula)
- Shuffle a deck of cards in Java
- When should we use Radix sort?
- How to calculate time complexity of backtracking algorithm?
- What is a loop invariant?
- Hash table runtime complexity (insert, search and delete)
- What integer hash function are good that accepts an integer hash key?
- Which is better: O(n log n) or O(n^2)
- What is O(log* N)?
- Quickselect time complexity explained
- Bellman-Ford vs Dijkstra: Under what circumstances is Bellman-Ford better?
- Asymptotic Notation – does n (log n) (log n) simplify?
- Difference between Big-O and Little-O Notation
- What is the big-O of the function (log n)^k
- How to calculate an angle from three points?
- Why is O(n) better than O( nlog(n) )?
- How to solve: T(n) = T(n/2) + T(n/4) + T(n/8) + (n)
- how to write a recurrence relation for a given piece of code
- How to sort in-place using the merge sort algorithm?
- Why is merge sort worst case run time O (n log n)?
- Why is merge sort worst case run time O (n log n)?
- What is the time and space complexity of a breadth first and depth first tree traversal?
- Create your own MD5 collisions
- Image Segmentation using Mean Shift explained
- Finding the median of an unsorted array
- Difference between Big-Theta and Big O notation in simple language
- How are the following functions O(N^3)?
- Difference between O(n) and O(log(n)) – which is better and what exactly is O(log(n))?
- Finding all possible combinations of numbers to reach a given sum
- Are there any real O(n^n) algorithms?
- Is Dijkstra’s algorithm for directed or undirected graphs?
- How to determine if a point is in a 2D triangle?
- Modular multiplicative inverse function in Python
- Minesweeper solving algorithm
- Best way to randomize an array with .NET
- Multi-character constant warnings
- warning: passing argument ’from incompatible pointer type [enabled by default]’