冒泡排序(Bubble Sort)
选择排序(Selection Sort)
插入排序(Insertion Sort)
希尔排序(Shell Sort)
归并排序(Merge Sort)
快速排序(Quick Sort)
堆排序(Heap Sort)
鸽巢排序(Pigeonhole Sort)
鸽巢排序(Pigeonhole Sort):
也被称作基数分类,是一种时间复杂度为O(n)且在不可避免遍历每一个元素并且排序的情况下效率最好的一种排序算法。简单来说就是建立“鸽巢”,用以累加元素个数,再还原排序。所以对于原数组的遍历只需一次,且不需要进行比较或交换操作。
代码逻辑:
建立另一个数组存放待排序数组元素,将原数组对应的值的个数放入,然后遍历所建立的数组,将排序的元素放回原数组,即完成排序。
实现逻辑:
(1)建立一个新数组(备用数组),数组长度为最大元素的值,并初始化为0;
(2)遍历待排序数组,将数组元素的值的个数累加放入备用数组中;
(3)遍历备用数组,将下标对应的值再一一放回原数组,即完成排序。
(数组长度应为最大元素减去最小元素的值;在第二步操作时,给每个元素减去最 小值