# Data Structures and Algorithms Sorting Algorithms

### Which sorting algorithms for data structures are stable and which ones are unstable?

direct insertion is stable direct selection is unstable (many books say so, but I always think it is stable) bubbling is stable hill is unstable fast is unstable heap is unstable subsumption is stable

### Which sorting algorithms for data structures are stable and which are unstable?

Quick sort, Hill sort, Heap sort, Direct selection sort are not stable sorting algorithms.

Base Sort, Bubble Sort, Direct Insertion Sort, Folded Half Insertion Sort, and Subsumption Sort are stable sorting algorithms.

1. The so-called sorting is the operation of arranging a string of records in increasing or decreasing order according to the size of one or more of the keywords. Sorting algorithm is the method of how to make the records arranged according to the requirement. Sorting algorithms have received considerable attention in many fields, especially in the processing of large amounts of data. A good algorithm can save a lot of resources.

2. Sorting is an important operation in computer programming, its function is to rearrange an arbitrary sequence of data elements (or records) into an ordered sequence of keywords.

3. Stability

A sorting algorithm is stable in the sense that when there are two equal records with a keyword sum that appeared before in the original list, it will also be before in the sorted list.

When the equal elements are indistinguishable, like integers, stability is not an issue. However, suppose the following pairs of numbers are going to be sorted by their first digit.

4. Unstable sorting algorithms may change the relative order of records among equal key values, but stable sorting algorithms never do. Unstable sorting algorithms can be implemented specifically to be stable. One way to do this is to manually expand the key comparisons, so that a comparison between two objects with otherwise identical keys is determined by using the entry in the original data order as a tie-breaker. However, keep in mind that this ordering usually involves an additional space burden.

### [Data Structures and Algorithms] Review of Heap Sort Algorithm

Heap Sort is a sorting algorithm designed to take advantage of the data structure of the heap, Heap Sort is a selection sort, it has a worst, best, and an average time complexity of O(nlogn), and it is also unstable sorting.

The main application scenarios of heap sort are: topk problem, priority queue and so on.

Principle:

1. n elements stored in array[0,…,n-1] is built into the initial heap;

2. At this time, the top element of the heap the maximum value of the heap

3. top element of the heap and the bottom element of the heap to be exchanged, then the maximum value of the sequence that has been put into the correct position;

4. but at this point the heap is destroyed, the top element of the heap is adjusted downwards so that it continues to maintain the nature of a big rooted heap, and steps 3,4 are repeated until there is only one element left in the heap.

1. Initialize the heap

After the process of initializing the heap, you can now find that the largest number is already at the top of the heap

2. Heap sort

Now what we have to do is to turn the whole heap into an ordered heap

Heap sort is a kind of selective sort, and the whole is mainly composed of two parts: constructing the initial heap + exchanging the top element of the heap with the last element and rebuilding the heap. The overall main components of the heap sort are two parts. The derived complexity of building the initial heap is O(n), and in the process of exchanging and rebuilding the heap, n-1 times need to be exchanged, while in the process of rebuilding the heap, according to the nature of complete binary tree, [log2(n-1),log2(n-2)…. .1] gradually decreasing, approximated as nlogn. so the heap sort time complexity is generally considered to be O(nlogn) level.