线性表——顺序表——时间复杂度计算

本文探讨了数据结构中线性表——顺序表的时间复杂度计算,通过两个示例分析了不同操作下时间复杂度的差异。示例1展示了将两个线性表合并时的时间复杂度为O(listLength(LA)*listLength(LB)),而示例2中非降序线性表的合并,时间复杂度降低为O(listLength(LA)+listLength(LB)),表明更优的算法设计能提高程序性能。
摘要由CSDN通过智能技术生成

  数据结构的核心思想是通过数据结构的思维来优化代码的算法,以此来提升程序的执行性能,缩短程序执行的时间。下面我来举两个例子,以此来说明数据结构的时间复杂度计算问题。

  由于我这里操作的是线性表——顺序表,所以说先把线性表——顺序表的源代码贴出来

AbstractLineMethod.java

package com.mycompany;

import util.ObjectHolder;

/**
 * Created by HP on 2017/9/6.
 */
public interface AbstractLineMethod {
   
    /**
     * 初始化线性表
     * @param size
     */
    void initList(int size);

    /**
     * 销毁线性表
     */
    void destroyList();

    /**
     * 清空线性表
     */
    void clearList();

    /**
     * 线性表判空
     * @return
     */
    boolean listEmpty();

    /**
     * 获取线性表的长度
     * @return
     */
    int listLength();

    /**
     * 获取指定位置处的元素
     * @param i
     * @param ele
     * @return
     */
    public boolean getElem(int i, ObjectHolder ele);

    /**
     * 获取该元素在线性表中第一次出现的位置
     * @param ele
     * @return
     */
    public int locateElem(ObjectHolder ele);

    /**
     * 获取指定元素的前驱
     * @param currentElem
     * @param preElem
     * @return
     */
    public boolean priorElem(ObjectHolder currentElem,ObjectHolder preElem);

    /**
     * 获取指定元素的后继
     * @param currentElem
     * @param nextElem
     * @return
     */
    public boolean nextElem(ObjectHolder currentElem,ObjectHolder nextElem);

    /**
     * 在线性表的指定位置处插入元素
     * @param i
     * @param ele
     * @return
     */
    public boolean listInsert(int i,Object ele);

    /**
     * 删除线性表指定位置处的元素
     * @param i
     * @param ele
     * @return
     */
    public boolean listDelete(int i,ObjectHolder ele);

    /**
     * 循环遍历线性表
     */
    public void listTraverse();

}

LineMethod.java

package com.mycompany;

import util.ObjectHolder;

/**
 * Created by HP on 2017/9/6.
 */
public class LineMethod implements AbstractLineMethod{
   

    private int m_size = 0;
    private Object[] m_pList = null;
    private int m_iLength = 0;

    /**
     * 初始化线性表
     * @param size
     */
    public void initList(int size){
        this.m_size = size;
        this.m_pList = new Object[size];
        this.m_iLength = 0;
    }

    /**
     * 销毁线性表
     */
    public void 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值