手写算法-四大排序
速度上:改良的归并排序算法是n-nlogn,快速排序的时间复杂度是nlogn-n^2.冒泡和选择都是n^2.
稳定性:快速、选择都不稳定,冒泡和归并都稳定
空间上:冒泡和选择都是1.快速为logn,归并为n
/**
* 一个完整的快速排序的方法
* 可以传入任意类型的buffer对其排序后返回
* 可以传入一个比较器对自定义类型排序
*
* @author 孤星魅影
* @param buffer 任意类型的buffer
* @param isASC 是否正序排序
* @param ev 自定义比较器
* @return 返回一个快速排序后的buffer
*/
def quickSort[T: ClassTag](buffer: mutable.Buffer[T])(implicit isASC: Boolean = true, ev: T => Comparable[T]): mutable.Buffer[T] = {
//为null、为空、长度为1时都返回buffer
if (buffer == null || buffer.length <= 1)
return buffer
//1.将数组的第一个数head与后面所有的数进行比较,左边放比head小的数,右边放比head大的数(从小到大)
//2.递归执行拆分,直到数组只剩下1个
//3.按顺序将左、中、右三者拼接起来,完成排序
val (left, right) = buffer.tail.partition(t => {
if (isASC) t.compareTo(buffer.head) < 0
else t.compareTo(buffer.head) > 0
})
quickSort(left) += buffer.head ++= quickSort(right)
}

相关推荐HOT
更多>>
大数据之蛇形矩阵
我们最终要输出的是以蛇形摆放之后的字符串再按行串联在一起之后的结果,也就是说每一个字母摆放的列并不重要,重要的是摆放的行号。我们可以很...详情>>
2022-12-07 20:58:39
大数据之两数相加
大数据通常包含的数据集的大小超出了常用软件工具在可容忍的经过时间内捕获、整理、管理和处理数据的能力。大数据哲学包含非结构化,半结构化和...详情>>
2022-12-07 20:56:39
设计一个实时的流式计算Wordcount
使用Kafka对接SparkStreaming计算,那么要保证数据不丢失,和不重复的话,要使用直连方式,并且保证一次性语义,手动管理Offset即可,那么在实...详情>>
2022-12-07 20:54:49
大数据之最长回文串
大数据通常包含的数据集的大小超出了常用软件工具在可容忍的经过时间内捕获、整理、管理和处理数据的能力。大数据哲学包含非结构化,半结构化和...详情>>
2022-12-07 20:51:53
两两交换链表中的节点
大数据通常包含的数据集的大小超出了常用软件工具在可容忍的经过时间内捕获、整理、管理和处理数据的能力。大数据哲学包含非结构化,半结构化和...详情>>
2022-12-07 20:46:54大数据培训问答更多>>
新大数据都学什么?5大核心知识必学内容有哪些
新大数据报班多少钱?如何选择培训机构
新人工智能学什么?自学可以成才吗
新数据处理包括哪些内容?是不是所有课程需要分别报课
新大数据分析需要学什么?怎么学比较好
新人工智能专业学什么?人工智能有哪些课程
新大数据数据分析师要学什么?好就业吗
大数据面试题库 更多>>
大数据的五个V是什么?
数据及集群管理(三)
数据及集群管理(二)
数据及集群管理(一)
大数据之hbase的优化读数据方面
大数据之hbase的优化写入数据方面
- 北京校区
- 大连校区
- 广州校区
- 成都校区
- 杭州校区
- 长沙校区
- 合肥校区
- 南京校区
- 上海校区
- 深圳校区
- 武汉校区
- 郑州校区
- 西安校区
- 青岛校区
- 重庆校区
- 太原校区
- 沈阳校区
- 南昌校区
- 哈尔滨校区
