关于排序算法

关于排序算法

比较排序算法的时间复杂度、性能
  • 常见的排序算法(内排序):冒泡、直接插入、选择排序、希尔排序、快排、基数排序、堆排序、归并
排序算法特征其他
冒泡排序n2
直接插入n2,对于接近有序的情况性能比较高
希尔排序n1.4,同上,复杂度不太好计算,最坏的情况接近n2
选择排序n2
快排nlogn,不稳定,但是平均最快的算法
基数排序这个和位数有关,比如:3位,每位的范围为0~k,复杂度为O(3(n+k))
堆排序nlogn,不稳定
归并nlogn,稳定
快排原理
  • 快排通过对比双指针大小+交换,每次将一位放到最终位置,使得左右两侧为比他大(或小)的两个集合,然后将问题分解成左右集合的快排,递归下去直到两个数的快排完成,整个快排就完成了,所有数都找到了最终位置。
很大数组筛选重复数字,并行方式和串行方式。
  • 对于筛选数字,一个比较好用的数据结构就是Map,典型的有HashMap;而并行和串行的区别就是,串行不需要考虑线程安全的问题,而并行需要,因此我们只需要采用线程安全的数据结构即可,这种方式兼容串行和并行。
    • 在Java中有线程安全版的HashMap,叫ConcurentHashmap,我记得它的实现是在原有的Hashmap(数组+列表(红黑树))的基础上再在数组上加锁,好像叫段锁,这样可以保证一个线程在修改这个key下的值的时候其他线程不会同时修改,从而保证了线程安全。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

椰子奶糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值