![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序算法整理
Serendipity°
在校学渣一枚
展开
-
冒泡排序-BubbleSort
/** * 冒泡排序 * <p> * 思想: * 1、每次循环都从数组起始位开始,依次比较前后两个数,若后者大于前者则交换; * 2、则每循环一轮,就可以将当前最大的数移到数组的最后; * 3、总共循环 n-1 轮后完成排序 */public class BubbleSort implements Sortable{ @Override public ...原创 2019-04-04 14:31:46 · 235 阅读 · 0 评论 -
选择排序-SelectionSort
/** * 选择排序 * <p> * 思想: * 1、每次循环都从还未排序的部分中找出最小(最大)元素; * 2、然后放到已排序部分的末尾; * 3、重复上述步骤直至所有元素均被处理 */public class SelectionSort implements Sortable{ @Override public void sort(int[] so...原创 2019-04-04 14:37:35 · 98 阅读 · 0 评论 -
基数排序-RedixSort
import java.util.ArrayList;/** * 基数排序 * <p> * 思想: * 1、基数排序可看成是将待排序元素拆分成多个关键字进行排序; * 2、若以元素位数为关键字,则从最低位开始,以该位上的值进行计数排序(若为 10 进制则设 10个桶); * 3、从低到高在下一位上重复上述步骤,直至所有元素的最高位 */public class Re...原创 2019-04-04 14:37:10 · 135 阅读 · 0 评论 -
快速排序-QuickSort
/** * 快速排序 * <p> * 思想: * 1、先找出一个基准数,例如取第一个元素; * 2、利用左右两个指针,右指针从右往左找到一个小于基准数的元素,左指针从左往右找到一个大于基准数的元素; * 3、交换两个指针对应的元素,并重复该步骤,直至两个指针相遇; * 4、然后将基准值放入指针相遇的对应位置,此时小于基准值的元素都在其左边,大于基准值的元素都在其右边; ...原创 2019-04-04 14:35:57 · 90 阅读 · 0 评论 -
归并排序-MergeSort
/** * 归并排序 * <p> * 思想: * 1、先将待排序数据不断拆分为左右两个子序列,直至子序列不可再拆分; * 2、然后将两个左右子序列进行合并,同时保证有序; * 3、重复上述拆分合并步骤直至完成排序 */public class MergeSort implements Sortable{ @Override public void so...原创 2019-04-04 14:35:27 · 105 阅读 · 0 评论 -
插入排序-InsertionSort
/** * 插入排序 * <p> * 思想: * 1、首先默认第一个元素已经有序; * 2、取下一个元素,将其从后往前依次和已排序部分进行比较; * 3、如果该元素小于已排序元素就继续向前找,同时不断将已排序元素的位置向后移动; * 5、直到其大于某个已排序元素,则插入到该元素之后; * 6、重复上述步骤直至所有元素均被处理 */public class Inser...原创 2019-04-04 14:34:44 · 156 阅读 · 0 评论 -
堆排序-HeapSort
/** * 堆排序 * <p> * 思想: * 1、利用堆这种高效的数据结构,先根据所有元素构建一个最大堆,即堆顶元素为最大值; * 2、然后每次将最后一个元素与堆顶元素互换,得到当前最大值,移动最后一个元素对应的指针并调整堆结构; * 3、如此重复直至所有元素均被处理 */public class HeapSort implements Sortable{ ...原创 2019-04-04 14:34:04 · 87 阅读 · 0 评论 -
计数排序-CountingSort
/** * 计数排序 * <p> * 思想: * 1、先找出待排序元素中的最大值 max,然后定义 max + 1个桶,每个桶用于记录该桶对应元素出现的次数; * 2、将所有元素依次放入对应的桶中; * 3、不同的桶之间可事先保证有序,因此只需按桶的顺序依次输出元素; * 4、对于每个桶,其中存储的数字 n 表示需要输出 n 个该桶对应的元素 */public cla...原创 2019-04-04 14:33:30 · 86 阅读 · 0 评论 -
桶排序-BucketSort
import java.util.ArrayList;import java.util.Collections;/** * 基数排序、计数排序和桶排序实际上都利用了桶的概念,但在对桶的使用方法上有区别: * <p> * 基数排序:根据键值每一位上的数字来确定对应的桶; * 计数排序:每个桶只存储单种键值(键值相同可放到一个桶中); * 桶排序:每个桶存储一定范围内的键值...原创 2019-04-04 14:32:49 · 206 阅读 · 0 评论 -
希尔排序-ShellSort
/** * 希尔排序 * <p> * 思想: * 1、希尔排序也称为"缩小增量排序",与插入排序相比,它会优先比较距离较远的元素; * 2、先将待排序数组按照增量分成多个子序列; * 3、然后对每个子序列进行插入排序; * 4、不断缩小增量值直至每个子序列中只包含一个元素 */public class ShellSort implements Sortable{ ...原创 2019-04-04 14:38:06 · 91 阅读 · 0 评论