数据结构java学习笔记

来源:互联网 发布:js 设置data属性 编辑:程序博客网 时间:2024/06/05 19:22

算法时间复杂度:

简单排序算法示例:

算法思想:在长度为n的数组中寻找最小的数据放到数组开头a[0],然后在剩下的n-1个数据中寻找最小的放到a[1],依次递归。

代码:

package selectSort;import java.util.Random;public class selectSort {public static void main(String[] args){Random random=new Random();int[] a=new int[20];for(int i=0;i<20;i++)a[i]=random.nextInt()%100;for(int e:a)System.out.print(e+" ");System.out.println();Sort(a);for(int e:a)System.out.print(e+" ");System.out.println();}public static void Sort(int[] a){int n=a.length;for(int k=0;k<n-1;k++){int min=k;for(int i=k+1;i<n;i++)if(a[i]<a[min])min=i;if(k!=min){int temp=a[k];a[k]=a[min];a[min]=temp;}}}}

选择排序算法的时间复杂度容易看出,对于长度为n的数组,复杂度为O(2*n^2),


线性表List:

线性表是一种抽象数据
类型;数组是一种具体的数据结构。线性表与数组的逻辑结构是不一样的,线性表是元素之
间具有1对1的线性关系的数据元素的集合,而数组是一组数据元素到数组下标的一一映射。
并且从物理性质来看,数组中相邻的元素是连续地存储在内存中的;线性表只是一个抽象的
数学结构,并不具有具体的物理形式,线性表需要通过其它有具体物理形式的数据结构来实
现。在线性表的具体实现中,表中相邻的元素不一定存储在连续的内存空间中,除非表是用
数组来实现的。对于数组,可以利用其下标在一个操作内随机存取任意位置上的元素;对于
线性表,只能根据当前元素找到其前驱或后继,因此要存取序号为i的元素,一般不能在一
个操作内实现,除非表是用数组实现的。




0 0
原创粉丝点击