简单排序:冒泡排序,选择排序,插入排序

冒泡排序

原理:

设置需求:按从小到大排序

1.比较相邻的两个元素大小,第一个元素比第二个元素大就交换位置,如果小就不动
2.依次比较所有相邻的数组,按照这种原理比较(n-1)次,会把最大值最终排到最后面

时间复杂度分析:

按最坏的情况
元素比较的次数:(n-1)+(n-2)+(n-3)+…+3+2+1=n^2/2-n/2
元素交换的次数再最坏情况下和比较次数是一样的次数:
(n-1)+(n-2)+(n-3)+…+3+2+1=n^2/2-n/2
所以总执行次数是:元素比较次数加上元素交换次数计算得:n^2-n
按照大O记法,冒泡排序的时间复杂度为O(n^2)

选择排序

原理

设置需求:从小到大排序

1.假定第一个元素(索引为0)是最小的元素,然后跟后面所有的元素进行比较,如果能找到比第一个元素还要小的元素,就用索引值进行标记为最小元素,当比较完所有的数值,选出了最小的元素,把最小元素和第一个元素的索引位置进行交换,就能把最小元素的排到最前面了
2.然后按照这个原理依次把后面的元素进行排序,这样就用选择排序完成了排序

时间复杂度分析:

按最坏的情况

元素比较的次数:(n-1)+(n-2)+(n-3)+…+3+2+1=n^2/2-n/2
元素交换的次数再最坏的情况下需要进行n-1次交换
所以总执行次数是:元素比较次数加上元素交换次数计算得:n^2/2+n/2-1
按照大O记法,冒泡排序的时间复杂度为O(n^2)

插入排序:

原理

设置需求:从小到大排序

1.把元素分为两组:已经排序的元素和未排序的元素
2.默认第一个元素是已经排序的,然后未排序的向已排序的组进行插入
3.未排序的第一个元素为待插入的元素,已排序的元素倒叙遍历依次和待插入元素进行比较,如果待插入元素比前面的小就交换位置,大就不动 (类似打扑克牌排序成顺子)

时间复杂度分析:

按最坏的情况:

元素比较的次数:(n-1)+(n-2)+(n-3)+…+3+2+1=n^2/2-n/2
元素交换的次数再最坏情况下和比较次数是一样的次数:
(n-1)+(n-2)+(n-3)+…+3+2+1=n^2/2-n/2
所以总执行次数是:元素比较次数加上元素交换次数计算得:n^2-n
按照大O记法,冒泡排序的时间复杂度为O(n^2)

总结

这三个排序规则的在最坏情况下时间复杂度都是O(n^2),而平方阶随着规模的增大,时间成本则急剧增加,所以这些基本排序方法都不能处理更大规模的问题

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值