时间复杂度 - 算法中的基本操作的执行次数,为算法的时间复杂度。
实际中我们计算时间复杂度时,我们其实并不一定要计算精确的执行次数,而只需要大概执行次数,那么这
里我们使用大O的渐进表示法。
推导大O阶方法:
空间复杂度 - 空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度
推导方法:
#define _CRT_SECURE_NO_WARNINGS 1
#pragma once
#include
#include
#include
静态的顺序表
//#define N 100
//struct SeqList
//{
// int a[N];
// int size;
//};
typedef int SeqDataType;
typedef struct SeqList
{
SeqDataType *a;
int size;//有效数据的个数
int capacity;//容量空间的大小
}SeqList;
//内存中管理数据的结构增删改查的接口
//函数声明
//初始化
void SeqListInit(SeqList* pq);
//尾插
void SeqListPushBack(SeqList* pq, SeqDataType x);
//头插
void SeqListPushFront(SeqList* pq, SeqDataType x);
//指定位置插入
void SeqListInsert(SeqList* pq, size_t pos, SeqDataType x);
//头删
void SeqListPopFront(SeqList* pq);
//尾删
void SeqListPopBack(SeqList* pq);
//指定位置删除
void SeqListDelete(SeqList* pq, size_t pos);
//指定位置修改数据
void SeqListModify(SeqList* pq, size_t pos, SeqDataType x);
//打印数据
void SeqLisPrint(SeqList* pq);
//销毁
void SeqListDestory(SeqList* pq);
//增容
void SeqCheckCapacity(SeqList* pq);
#define _CRT_SECURE_NO_WARNINGS 1
#include "SeqList.h"
//初始化
void SeqListInit(SeqList* pq)
{
assert(pq);
pq->a = 0;
pq->capacity = pq->size = 0;
}
//增容
void SeqCheckCapacity(SeqList* pq)
{
assert(pq);
if (pq->size == pq->capacity)
{
int newcapacity = pq->capacity == 0 ? 4 : 2 * (pq->capacity);
SeqDataType* newpq = realloc(pq->a, sizeof(SeqDataType) * newcapacity);
if (newpq == NULL)
{
perror("SeqCheckCapacity");
}
pq->a = newpq;
pq->capacity = newcapacity;
}
}
//尾插
void SeqListPushBack(SeqList* pq, SeqDataType x)
{
assert(pq);
//增容
SeqCheckCapacity(pq);
//pq->a[pq->size] = x;
//pq->size++;
SeqListInsert(pq, pq->size, x);
}
//头插
void SeqListPushFront(SeqList* pq, SeqDataType x)
{
assert(pq);
//增容
SeqCheckCapacity(pq);
//int end = pq->size - 1;
//while (end >= 0)
//{
// pq->a[end + 1] = pq->a[end];
// end--;
//}
//pq->a[0] = x;
//pq->size++;
SeqListInsert(pq, 0, x);
}
//指定位置插入
void SeqListInsert(SeqList* pq, size_t pos, SeqDataType x)
{
assert(pq);
assert(pos <= pq->size);
//增容
SeqCheckCapacity(pq);
size_t end = pq->size;