常见的排序算法
常见的算法排序算法有:
- 冒泡排序
- 选择排序
- 插入排序
- 归并排序
- 快速排序
# 冒泡排序
重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来
- 比较相邻的元素,如果第一个比第二个大,就交换它们两个
- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数
- 针对所有的元素重复以上的步骤,除了最后一个
- 重复上述步骤,直到没有任何一堆数字需要比较
# 选择排序
一种交换排序算法
- 在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
- 从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
- 重复第二步,直到所有元素均排序完毕
# 插入排序
未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入
- 把待排序的数组分成已排序和未排序两部分,初始的时候把第一个元素认为是已排好序的
- 从第二个元素开始,在已排好序的子数组中寻找到该元素合适的位置并插入该位置(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)
- 重复上述过程直到最后一个元素被插入有序子数组中
# 归并排序
采用分治法
- 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列
- 设定两个指针,最初位置分别为两个已经排序序列的起始位置
- 比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置
- 重复步骤3直到某一指针到达序列尾
- 将另一序列剩下的所有元素直接复制到合并序列尾
# 快速排序
从数列中挑出一个元素,称为"基准",比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面
- 从数列中挑出一个元素,称为"基准"
- 重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面(相同的数可以到任何一边)。在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区操作
- 递归把小于基准值元素的子数列和大于基准值元素的子数列排序
上次更新: 2024/08/14, 04:14:33