A sorting algorithm is said to be stable if two objects with equal keys appear in the same order in sorted output as they appear in the input unsorted array. Some sorting algorithms are stable by nature like Insertion sort, Merge Sort, Bubble Sort, etc. And some sorting algorithms are not, like Heap Sort, Quick Sort, etc.

However, any given sorting algo which is not stable can be modified to be stable. There can be sorting algo specific ways to make it stable, but in general, any comparison based sorting algorithm which is not stable by nature can be modified to be stable by changing the key comparison operation so that the comparison of two keys considers position as a factor for objects with equal keys.

References:

http://www.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf

http://en.wikipedia.org/wiki/Sorting_algorithm#Stability

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.