建立一个有n个元素的有序单链表的时间复杂度度为什么是O(n^2) 求详解哇……(>﹏<)

JavaScript025

建立一个有n个元素的有序单链表的时间复杂度度为什么是O(n^2) 求详解哇……(>﹏<),第1张

因为o(n^2),对单链表而言,一些快速的排序算法,不能用,只能用直接插入等o(n^2)级的排序算法来实现排序。因为是有序单链表那么每次插入到链表尾结点,那么每次插入都要从头扫到尾,然后1+2+3+... m = O(m^2)这样。

链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) +指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。以“结点的序列”表示线性表称作线性链表(单链表),单链表是链式存取的结构。

扩展资料:

typedef char DataType//假设结点的数据域类型为字符

typedef struct node{ //结点类型定义

DataType data//结点的数据域

struct node *next//结点的指针域

}ListNode

typedef ListNode *LinkList

ListNode *p

LinkList head

注意:

①LinkList和ListNode是不同名字的同一个指针类型。(命名的不同是为了概念上更明确)

②*LinkList类型的指针变量head表示它是单链表的头指针。

③ListNode类型的指针变量p表示它是指向某一结点的指针。

唯一的区别是,数组的属性是0-n整数

对象的属性可以是任意字符串

比如有一个数组a=[1,2,3,4],还有一个对象a={0:1,1:2,2:3,3:4},然后你运行alert(a[1]),两种情况下的运行结果是相同的!这就是说,数据集合既可以用数组表示,也可以用对象表示,那么我到底该用哪一种呢?

数组表示有序数据的集合,而对象表示无序数据的集合。如果数据的顺序很重要,就用数组,否则就用对象。

当然,数组和对象的另一个区别是,数组的数据没有”名称”(name),对象的数据有”名称”(name)。

但是问题是,很多编程语言中,都有一种叫做”关联数组”(associative

array)的东西。这种数组中的数据是有名称的。

java数组的应用教程: