【算法】十大排序算法
冒泡排序
算法思想:基于比较的思想,从第一个元素开始,依次比较相邻两个元素大小,较大者放在后面,经过一轮后,最大的元素位于最后(最大元素不断冒泡到最后的位置),重复n轮。
选择排序
算法思想:基于比较的思想,维护一个记录最大值的变量,遍历所有元素找到最大值所在位置,将其与最后的位置交换,重复n轮。
堆排序
算法思想:基于选择的思想,利用堆数据结构排序不断选择出最大值,初始化堆(通过建堆和下潜操作),将堆顶(数组第一位)最大值与最后位置交换,再对堆顶元素进行下潜操作(堆大小减1)。
插入排序
算法思想:基于比较的思想,不断将元素插入到已经排好序的数组,插入排序对于近乎有序的数据处理速度比较快。
希尔排序
算法思想:基于插入的思想,可看作插入排序加强版,利用插入排序对近乎有序的数据处理速度比较快的特点,将待排序数组分成多个小组(每隔gap个元素一组),在小组内进行插入排序,此时数组有一定的顺序,不断缩小gap直至1重复分组再组内排序。
归并排序
算法思想:基于分治的思想,分 - 每次从中间切一刀,处理的数据少一半。治 - 当数据仅剩一个时可以认为有序。 合 - 两个有序的结果,可以进行合并排序。
快速排序
算法思想:基于分治的思想,选取一个基准,将小于基准的元素全部放在左边,大于基准的元素全部放在右边,再递归操作左边数组和右边数组。
计数排序
求出最大值M和最小值m,创建一个长度为M-m的数组,第一个位置存最小值,依次类推。将元素大小与数组索引绑定,最后依次取出数组中的元素达到排序效果。
桶排序
将所有元素放在准备好的桶内,前一个桶内的最大值小于后一个桶内的最小值,再对桶内元素排序。
基数排序
对个位元素进行比较,依次放到对应桶里,再把桶里的元素依次取出放在数组里,相当于完成个位排序,再对数组中元素十位进行重复操,直到最高位。