算法-排序,查找

1.排序
常用的排序算法有快速排序,归并排序.
(1). 快速排序
以下是快速排序的基本步骤:
a. 选择一个基准元素:通常选择序列的第一个元素作为基准元素。
b. 划分过程:将待排序的序列重新排序,所有比基准元素小的元素放在基准元素的左边,所有比基准元素大的元素放在基准元素的右边。在这个分区结束之后,该基准元素就处于数列的中间位置。这个过程称为分区操作(partition)。
递归地(recursive)把小于基准值元素的子序列和大于基准值元素的子序列排序:递归地将上述两个子序列进行快速排序。

在每次划分后,左右两边元素数量接近时时间复杂度可达Θ(nlg(n)),最差下退化为Θ(n^2)
(2). 归并排序
归并排序(Merge Sort)是一种分治思想的排序算法,它将待排序的序列划分为若干个子序列,每个子序列是有序的,然后再把有序子序列合并为整体有序序列。归并排序的时间复杂度为O(n log n),且是稳定的排序算法。稳定指的是相等元素排序前后相对位置不变.

下面是归并排序的基本步骤:
a. 分解:将序列分解成两个长度相等的子序列,直到子序列的长度为1
b. 递归进行排序并合并:递归地对子序列进行归并排序,并将已排序的子序列合并成一个大的有序序列,直到合并为1个完整的序列为止。
合并两个有序子序列的过程是归并排序的关键部分,具体步骤如下:
b.1. 创建两个指针,分别指向两个子序列的起始位置。
循环迭代b.2,直到其中一个子序列的所有元素都放入了临时序列。
b.2. 比较两个指针所指的元素,将较小的元素放入新的临时序列中,并将该指针向后移动一位。
b.3. 将另一个子序列中剩余的元素(如果有的话)直接追加到临时序列的末尾。
b.4. 将临时序列复制回原序列中,以完成合并操作。

2.搜索
对有序集合可使用二分搜索.
二分搜索(Binary Search)是一种在有序集合中查找某一特定元素的搜索算法。搜索过程从集合的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在集合大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

raindayinrain

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

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

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

打赏作者

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

抵扣说明:

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

余额充值