【数据结构】24种常见算法题(一)

简介: 常见算法题
  1. 补全下面顺序表的插入操作算法代码:
publicvoidinsert(inti, Objectx) {
//0.1 满校验:存放实际长度 和 数组长度 一样if(curLen==listEle.length) {
thrownewException("已满");    
    }
//0.2 非法校验,在已有的数据中间插入 [0, curLen],必须连续,中间不能空元素if(i<0||i>curLen     )  thrownewException("位置非法");
//1 将i及其之后后移for(intj=curLen ; j>i; j--) {
listEle[j] =listEle[j-1];       
    }
//2 插入i处listEle[i] =x;
//3 记录长度curLen++;
}
  1. 补全顺序表的删除算法代码
publicvoidremove(inti ) throwsException {
// 0.1 校验非法数据if(i<0||i>curLen1     ) {
thrownewException("位置非法");
    }
// 1 将i之后向前移动for(intj=i ; j<curLen-1 ; j++ ) {
listEle[j] =listEle[j+1];      
    }
// 2 长度减一curLen--;
}
  1. 补全顺序表的查找算法1代码

循环遍历已有数据,进行判断,如果有返回第一个索引号,如果没有返回-1

publicintindexOf(Objectx) {
for(inti=0; i<curLen ; i++) {
if( listEle[i].equals(x)    ) {
returni;     
        }
    }
return-1;     
}
  1. 补全顺序表的查找算法2代码

使用变量记录没有匹配到索引

publicintindexOf(Objectx) {
intj=0; //用于记录索引信息while(j<curLen&&!listElem[j].equals(x)     )  j++;
// j记录索引小于数量if(j<curLen    ) {
returnj;   
    } else {
return-1    }
}
  1. 补全单链表长度算法:
publicclassNode{
publicObjectdata; //数据域publicNodenext; //指针域}
publicintlength() {
Nodep=head.next; // 获得第一个结点intlength=0; // 定义一个变量记录长度while(p!=null) {
length++; //计数p=p.next; //p指向下一个结点    }
returnlength;   
}
  1. 补全单链表按索引号(位序号)查找算法代码:
publicclassNode{
publicObjectdata; //数据域publicNodenext; //指针域}
publicObjectget(inti) {
Nodep=head.next; //获得头结点intj=0; //已经处理的结点数while(p!=null&&j<i    ) { //链表没有下一个 && 处理有效部分p=p.next;     
j++;
    }
if(i<0||p==null) {
thrownewException("元素不存在");   
    }
returnp.data; //返回数据}
  1. 补全按值查找索引算法代码:
publicclassNode{
publicObjectdata; //数据域publicNodenext; //指针域}
publicObjectget(inti) {
Nodep=head.next; //获得头结点intj=0; //已经处理的结点数while(p!=null&&j<i    ) { //链表没有下一个 && 处理有效部分p=p.next;     
j++;
    }
if(i<0||p==null) {
thrownewException("元素不存在");   
    }
returnp.data; //返回数据}
  1. 补全入栈算法代码
publicclassSqStack {
privateObject[] stackElem; //栈对象数组privateinttop; //长度、下一个存储位置 等}
publicvoidpush(Objectx) {
if(top==stackElem.length    ) { //栈满thrownewRuntimeException("栈满");
    } else {
stackElem[top] =x;      
top++;
    }
}
  1. 1~n求和算法代码补全(n=10)
publicclassTestSum {
publicstaticvoidmain(String[] args) {
System.out.println(sum(10));
    }
privatestaticintsum(intn) {
if(n==1) {
return1;        
        }
returnn+sum(n-1);  
    }
}
  1. n!算法代码补全(n=10)
publicclassTestFactorial {
publicstaticvoidmain(String[] args) {
System.out.println(factorial(4));
    }
privatestaticintfactorial(intn) {
if(n==1 ) {
return1;
        }
returnn*factorial(n-1);      
    }
}
  1. 斐波那契数列算法代码补全(n=10)
publicclassTestFibonacci {
publicstaticvoidmain(String[] args) {
for(inti=0 ; i<=10 ; i++) {
System.out.print(fibonacci(i) +"、");
        }
    }
privatestaticintfibonacci(intn) {
if(n==0)  return0;
if(n==1)  return1;
returnfibonacci(n-1) +fibonacci(n-2);   
    }}
  1. 串的扩容算法代码补全
publicvoidallocate(intnewCapacity) {
char[] temp=strvalue; // 存放原来的数据 ab数组strvalue=newchar[newCapacity]; // 给strValue重新赋一个更大数组的值for(inti=0; i<temp.length; i++) { // 拷贝数据strvalue[i] =temp[i];   
    }
}
  1. 串的求子串算法代码补全
publicIStringsubstring(intbegin , intend) {
// 1 两个参数校验if(begin<0||end>curlen||begin>end) {
thrownewStringIndexOutOfBoundsException("条件不合法");
    }
// 2 优化:当前串直接返回if(begin==0&&end==curlen)  returnthis;    
// 3 核心算法char[] buffer=newchar[end-begin]; // 构建新数组for(inti=0 ; i<buffer.length ; i++) { // 依次循环遍历新数组,一个一个赋值buffer[i] =strvalue[i+begin];
    }
相关文章
|
2月前
|
算法 数据处理 C语言
C语言中的位运算技巧,涵盖基本概念、应用场景、实用技巧及示例代码,并讨论了位运算的性能优势及其与其他数据结构和算法的结合
本文深入解析了C语言中的位运算技巧,涵盖基本概念、应用场景、实用技巧及示例代码,并讨论了位运算的性能优势及其与其他数据结构和算法的结合,旨在帮助读者掌握这一高效的数据处理方法。
51 1
|
3月前
|
存储 人工智能 算法
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
101 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
|
2月前
|
存储 算法 搜索推荐
Python 中数据结构和算法的关系
数据结构是算法的载体,算法是对数据结构的操作和运用。它们共同构成了计算机程序的核心,对于提高程序的质量和性能具有至关重要的作用
|
2月前
|
数据采集 存储 算法
Python 中的数据结构和算法优化策略
Python中的数据结构和算法如何进行优化?
|
2月前
|
算法
数据结构之路由表查找算法(深度优先搜索和宽度优先搜索)
在网络通信中,路由表用于指导数据包的传输路径。本文介绍了两种常用的路由表查找算法——深度优先算法(DFS)和宽度优先算法(BFS)。DFS使用栈实现,适合路径问题;BFS使用队列,保证找到最短路径。两者均能有效查找路由信息,但适用场景不同,需根据具体需求选择。文中还提供了这两种算法的核心代码及测试结果,验证了算法的有效性。
112 23
|
2月前
|
算法
数据结构之蜜蜂算法
蜜蜂算法是一种受蜜蜂觅食行为启发的优化算法,通过模拟蜜蜂的群体智能来解决优化问题。本文介绍了蜜蜂算法的基本原理、数据结构设计、核心代码实现及算法优缺点。算法通过迭代更新蜜蜂位置,逐步优化适应度,最终找到问题的最优解。代码实现了单链表结构,用于管理蜜蜂节点,并通过适应度计算、节点移动等操作实现算法的核心功能。蜜蜂算法具有全局寻优能力强、参数设置简单等优点,但也存在对初始化参数敏感、计算复杂度高等缺点。
64 20
|
2月前
|
机器学习/深度学习 算法 C++
数据结构之鲸鱼算法
鲸鱼算法(Whale Optimization Algorithm,WOA)是由伊朗研究员Seyedali Mirjalili于2016年提出的一种基于群体智能的全局优化算法,灵感源自鲸鱼捕食时的群体协作行为。该算法通过模拟鲸鱼的围捕猎物和喷出气泡网的行为,结合全局搜索和局部搜索策略,有效解决了复杂问题的优化需求。其应用广泛,涵盖函数优化、机器学习、图像处理等领域。鲸鱼算法以其简单直观的特点,成为初学者友好型的优化工具,但同时也存在参数敏感、可能陷入局部最优等问题。提供的C++代码示例展示了算法的基本实现和运行过程。
59 0
|
3月前
|
机器学习/深度学习 存储 缓存
数据结构与算法学习十:排序算法介绍、时间频度、时间复杂度、常用时间复杂度介绍
文章主要介绍了排序算法的分类、时间复杂度的概念和计算方法,以及常见的时间复杂度级别,并简单提及了空间复杂度。
52 1
数据结构与算法学习十:排序算法介绍、时间频度、时间复杂度、常用时间复杂度介绍
|
2月前
|
算法 vr&ar 计算机视觉
数据结构之洪水填充算法(DFS)
洪水填充算法是一种基于深度优先搜索(DFS)的图像处理技术,主要用于区域填充和图像分割。通过递归或栈的方式探索图像中的连通区域并进行颜色替换。本文介绍了算法的基本原理、数据结构设计(如链表和栈)、核心代码实现及应用实例,展示了算法在图像编辑等领域的高效性和灵活性。同时,文中也讨论了算法的优缺点,如实现简单但可能存在堆栈溢出的风险等。
60 0
|
3月前
|
存储 算法 Java
Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定数据结构和算法确保元素唯一性
Java Set因其“无重复”特性在集合框架中独树一帜。本文解析了Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定数据结构和算法确保元素唯一性,并提供了最佳实践建议,包括选择合适的Set实现类和正确实现自定义对象的hashCode()与equals()方法。
57 4