活动地址:CSDN21天学习挑战赛
学习知识点
1.什么是算法
2.时间复杂度
3.空间复杂度
4.什么是查找
5.顺序查找
学习遇到的问题
目前,时间复杂度对我来说有些难以计算
收获
1对算法的理解
算法就是解题步骤
输入是写入的数据,输出是答案
算法就是输入输出中的解题步骤
2对时间复杂度的理解
基本操作的重复执行次数
此处的基本操作指的是:最底层循环控制语句中的判断、赋值、四则判断等
常见的时间复杂度(由低到高):O(1)、O(log2n)、O(n)、O(nlog2n)、O(n2)、O(n3)、O(2n)、O(n!)
3对空间复杂度的理解
程序执行时所需的内存容量
算法运行时需要额外定义多少临时变量/存储结构。
如果用一个临时变量交换两个元素,此时空间复杂度为O(1)。
4对查找/检索的理解
在某种数据结构中找出满足给定条件的元素
5对顺序查找的理解
从数组的一边开始,元素进行逐个比较,如果与给定的待查元素相同,则查找成功;反之,查找失败。
顺序查找的代码
//输入所需要的包
import java.util.Scanner;
public class samp_5{
public static void main(String[] args) {
System.out.println("需要输入多少数据?");
//输入固定格式,不做过多解释
Scanner s=new Scanner(System.in);
//自定义输入数据数
int n;
//输入固定格式,不做过多解释
//输入数据数
n=s.nextInt();
//数组存储数据
int[] a=new int[n];
//利用for循环控制结构存储数据
for(int i=0;i<a.length;i++){
System.out.print("请输入第"+(i+1)+"个数据:");
a[i]=s.nextInt();
}
System.out.println("\n数据输入完毕。");
System.out.println();
//定义查找数据key
int key;
System.out.print("请输入您要查找的数据:");
key=s.nextInt();
System.out.println();
//调用算法,查找数据位置
int result = search(a, key);
//输出数据
if(result==-1){
System.out.println("查无此数据");
}
else{
System.out.println("为您查找到的数据结果:\n第"+result+"个数据为"+a[result-1]);
}
}
private static int search(int[] a,int key) {
//变量初始化
int i = 0;
//遍历数组
while (i < a.length){
//比较判断,相等时回到数据位置
if (a[i] == key){
return i + 1;
}
//不相等时,变量+1继续判循环断
i++;
}
//若没有满足条件的,result=search=-1
return -1;
}
}