数据结构
数据结构入门
算法是推导出来的不是靠记出来的
这门课学起来比较枯燥,而且感觉在应用层面用处不是很大,那我们为什么要学习这
么课呢?
。培养编程思维,将传统的计算思维转换成编程思维。
。复杂问题简单化,功能分解,逐步求精。
。掌握基本的数据结构,加深对程序底层的理解!
。利用编程思维解决生活和工作中的各种问题。
一个排序的案例
题目:一个数组li={4, 7, 8, 5, 9, 1, 3, 6, 2},对他进行一个排序,从大到小。
思路:
1.找出数组li的最大值,然后将最大值给另一个数组的第一项
2.然后将原数组li的这个做大值变成-1
3.循坏一次
public class sort_max_min {
public static void main(String[] args) {
int[] array = {4, 7, 8, 5, 9, 1, 3, 6, 2};
int max = 0;
int[] arraySort = new int[array.length];
for (int j = 0; j < arraySort.length; j++) {
for (int i = 0; i < array.length; i++) {
if (array[i] > array[max]) {
max = i;//最大值的下标获取
}
}
arraySort[j] = array[max];//将最大值给另一个数组
array[max] = -1;//将原来数组最大值为-1
}
for (int i = 0; i < arraySort.length; i++) {
System.out.println(arraySort[i]);//遍历数组arraySort
}
}
}
算法概述
算法是一系列程序指令,用于处理特定的运算和逻辑问题
也可以理解成,输入一个数据,通过算法可以获取需要的输出结果
算法复杂度
算法是有优劣之分的,通过时间复杂度和空间复杂度进行区别
时间复杂度:是对一个算法运行时间长短的量度,用大O表示
空间复杂度:是指一个算法在运行过程中临时暂用内存空间大小的量度,用大O表示
很多时候,我们不得不在时间复杂度和空间复杂度之间做取舍。有时我们需要牺牲时间来
换取空间,有时候我们又需要牺牲空间来换取时间。在绝大多数时候,时间复杂度更为重
要一些,存储空间不足可进行扩充,但是程序的执行速度是必须要放在首位。
数据结构概述
数据结构是数据的组织、管理和存储格式,其使用的目的是为了高效的修改和访问数据。
数据结构可以分为物理结构和逻辑结构
物理结构
·物理结构就是计算机中真实的存储方式,主要有数组和链表两种方式 ·数组存储就是将数据存放在连续内存空间中
·链表存储可以将数据存放在内存的任意位置,每个通过指向下一个元素的指针实现 逻辑结构
逻辑结构是从具体问题抽象出来的模型,是抽象意义上的结构,可以按照对象中元素之间
的关系相互分类
·常见的逻辑结构有一下几种:
线性结构
树结构(层次结构)
图结构(网状结构)