排序算法——冒泡、选择、插入排序

本文简单总结一下三大排序算法,如有不足,请多多提意见。。。。。。

一、冒泡排序(Bubble sort)

简述:从小到大排序,每次比较两个元素,看他们的顺序有没有错,如果错了就换过来。

1:算法步骤

a:比较ABC....元素,如果第一个比第二个大,则将两个元素交换位置 BAC...,再依次将A和C进行比较。

b:对每一对相邻的元素做同样的工作,从第一对到最后一对。这一次执行完,最后一个元素是最大的元素。

c:重复以上a、b、c步,直到每个元素都不需要交换位置为止

2:效率

在所有数据都是正序的时候,冒泡排序最快(都排好序了,目的已达到)。

当所有数据都排反序的时候最慢。

二、选择排序

 简述:第一遍循环找到最小的元素放到第一位,第二次循环找到一个第二小元素,放到第二位,以此完成排序。在每次循环中,先把第一个元素标记为最小元素,然后将它与其后面的元素比较,发现比它小的,就将其标记为本次循环的最小元素。O(n2),

1:算法步骤

a:先从未排序序列中找到最小(大)元素放到起始位置

b:再从剩余未排序序列中继续寻找最小(大)元素放到已排序末位

c:重复以上a、b两步,直到排序完成

2:效率

    无论什么数据进入,时间复杂度都是,时间复杂度都是O(n²),因此,这个排序适用于小数据集。

三、插入排序

简述:通过构建有序序列,对与未排序序列,从后向前扫描,逐个比较之后,插入到相应的位置上。O(n2),

1:算法步骤

a:将第一待排序序列的第一个元素看成有序序列,将第二个元素到最后一个元素当成未排序序列

b:从头到尾扫描未排序序列,将其插到已排序序列的的适当位置(如果两个元素相等,则插入到已排序序列元素的后面)。


2:效率

        优点1:就是第二层循环在找到合适的插入位置之后可以提前终止,同时直接使用赋值操作,不像c++中使用swap来交换位置。:

       优点2:当数组为近乎有效的数组时,插入排序的效率与NlogN级别的排序算法相差无几。

       优点3:而当数组是完全有序的数组时,插入排序算法的性能可以达到O(n),因为第二层循环可以直接终止,而只进行第一层循环。


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值