顺序表所有元素逆置
来源:互联网 发布:水印相机软件 编辑:程序博客网 时间:2024/06/14 10:45
题目:设计一个高效的算法,将顺序表的所有元素逆置,要求算法的空间复杂度为O(1)。
算法思想:扫描顺序表的前半部分元素,对于元素L.data[i] (0<=i<L.length/2),将其余后半部分对应元素L.data[L.lengtn-i-1]进行交换。
空间复杂度:
算法的空间复杂度S(n),定义为该算法所耗费的存储空间,它是问题规模n的函数。渐近空间复杂度也常简称为空间复杂度,记作S(n)=O(g(n))。
一个上机程序除了需要存储空间来存放本身所用指令、常数、变量和输入数据外,也需要一些对数据进行操作的工作单元和存储一些为实现计算所需信息的辅助空间,若输入数据所占空间只取决于问题本身,和算法无关,则只需分析除输入和程序之外的额外空间。
算法原地工作是指算法所需辅助空间是常量,即O(1)。
自己写的核心代码(算法):
void Reverse_Sq(LIST *list){int p;int i = 0;int j = list->length - 1;while (i<list->length / 2 && j>=list->length / 2){ p = list->base[i];list->base[i] = list->base[j];list->base[j] = p;i++;j--;}
我这里用到了i和j两个变量,参考答案只用到了i就可以实现,是根据上述算法思想写的,可以参考上述算法思想来实现。
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#define N 8typedef struct{int * base;int length;int listsize;}LIST;void Init_LIST(LIST* list){list->listsize = 100;list->base = (int*)malloc(list->listsize*sizeof(int));list->length = 0;}void Reverse_Sq(LIST *list){int p;int i = 0;int j = list->length - 1;while (i<list->length / 2 && j>=list->length / 2){ p = list->base[i];list->base[i] = list->base[j];list->base[j] = p;i++;j--;}}int main(){LIST mylist;Init_LIST(&mylist);printf("请输入mylist里数据:\n");for (int i = 0; i < N; i++){scanf("%d", &mylist.base[i]);mylist.length++;}Reverse_Sq(&mylist);printf("请输出mylist里数据:\n");for (int i = 0; i < N; i++){printf("%d ", mylist.base[i]);}}
阅读全文
0 0
- 顺序表所有元素逆置
- 9.逆置顺序表中的所有元素
- 将顺序表中的所有元素逆置
- 将顺序表的所有元素逆置,空间复杂度O(1)
- 数据结构之 将顺序表所有元素逆置,要求空间复杂度为O(1)
- 顺序表、单链表元素逆置
- 顺序表删除和X相同的所有元素(C)
- 数据结构(一)顺序表2:顺序表的就地逆置和顺序表中删除元素值
- 将顺序存储的线性表中所有零元素向表尾集中
- 10.删除顺序表中小标从i到j的所有元素
- 设计一个算法,从顺序表中删除所有值为x的元素
- 设计删除顺序表中【x,y】中的所有元素算法
- 从顺序表L中删除所有值为x的元素
- 顺序表元素移位
- 设顺序表 S 中元素递增有序,编写算法删除 S 所有大于 k1 且小于 k2 的元素
- 从顺序表中删除所有元素值为x的元素,要求空间复杂度为O(1)
- 从顺序表L中删除元素x到y之间的所有元素(x<=y)
- 第3周项目4-顺序表的应用(1)删除元素在[x, y]之间的所有元素
- Linux 常用操作及vim编辑
- Remove Duplicates from Sorted Array
- 友链
- 在Linux 操作系统下获得cpu的socket的个数
- Linux的用户组和文件权限详解
- 顺序表所有元素逆置
- 【题解】吉哥系列故事——恨7不成妻
- Spring和JAVA
- WCF架构学习01-WebService篇
- 图形处理-边缘检测
- Linux磁盘管理的相关命令
- redis与Mysql的数据一致性
- Android7.0 SDcard无法创建文件夹解决办法
- JMeter压力测试初级教程