暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
十大基本算法介绍.pdf
30
29页
0次
2024-02-28
免费下载
十大基本算法介绍
一、算法概述:
1.算法分类:
十种常见算法可以分为两大类:
比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能超过 Q(nlogn),因此也称为非线性
时间比较类排序。
非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下限, 以线性时间
行, 因此也称为线性时间非比较类排序。
2.算法复杂度:
算法复杂度
排序方
时间复杂度()
时间复杂度()
时间复杂度()
空间复杂度
稳定性
插入排序
O(n2)
O(n2)
O(n)
O(1)
稳定
希尔排序
O(n1.3)
O(n2)
O(n)
O(1)
不稳定
选择排序
O(n2)
O(n2)
O(n2)
O(1)
不稳定
堆排序
O(nlog2n)
O(nlog2n)
O(nlog2n)
O(1)
不稳定
冒泡排序
O(n2)
O(n2)
O(n)
O(1)
稳定
快速排列
O(nlog2n)
O(n2)
O(nlog2n)
O(nlog2n)
不稳定
归并排序
O(nlog2n)
O(nlog2n)
O(nlog2n)
O(n)
稳定
计数排序
O(n+k)
O(n+k)
O(n+k)
O(n+k)
稳定
桶排序
O(n+k)
O(n2)
O(n)
O(n+k)
稳定
计数排序
O(n*k)
O(n*k)
O(n*k)
O(n+k)
稳定
3.相关概念:
稳定:如果 a 原本在 b 前面,而 a=b 排序之后 a 任然在 b 前面。
不稳定:如果 a 原本在 b 前面,而 a = b, 排序之后 a 可能会出现在 b 的后面。
时间复杂度:对排列数据的总的操作次数。反映当 n 变化时,操作次数呈现什么规律。
空间复杂度:是指算法在计算机内执行时所需存储空间的度量,它也是数据规模 n 的函数。
4.算法的选择
n 较小( n≤50) 可采用直接插入或直接选择排序;
若文件初始状态基本有序(指正序),则应选用直接插入、冒泡或随机的快速排序为宜;
n 较大,则应采用时间复杂度为 O(n log n) 的排序方法:快速排序、堆排序或归并排序;
n 较小,考虑稳定性,可以使用:基数排序、计数排序或者桶排序。
其中 插入算法和 归并算法 对重复率比较高的排序比较友好;冒泡算法不适合大量数据。
二、具体定义:
1.冒泡排序:
* 概念:冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误
就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名
字由来是因为越小的元素会经由交换慢到数列的顶端。
*算法描述:
比较相邻的元素。如果第一个比第二个大,就交换它们两个;
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;
针对所有的元素重复以上的步骤,除了最后一个;
重复步骤 1~3,直到排序完成。
*算法实例:
.
function bubbleSort(arr) {
.
.
var len = arr.length;
.
.
for (var i = 0; i < len - 1; i++) {
.
.
for (var j = 0; j < len - 1 - i; j++) {
.
.
if (arr[j] > arr[j + 1]) { //
相邻元素两两对比
.
.
var temp = arr[j + 1]; //
元素交换
.
.
arr[j + 1] = arr[j];
of 29
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。