2022/7/15 第六组 王梦龙 学习记录
作者:互联网
学习内容思维导图
主要内容
数据结构
1、数组
数组是最基本的数据结构,是一张表,线性表(数据元素)
除了第一个和最后一个之外,其余的元素都是首尾相连
- 数组是相同类型数据的有序集合。
- 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。
- 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们。
2、链表
链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的。
3、图
图是一种数据结构,其中节点可以具有零个或多个相邻的元素,两个节点之间的连接称为边,节点也可以称为顶点。
4、树
树是一种抽象数据类型或是实现这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n>0)个有限节点组成一个具有层次关系的集合。
排序
1、冒泡排序
- 比较相邻的两个元素,如果第一个元素大于第二个元素,就交换位置
- 对每一对相邻的元素再做同样的比较,从最开始的一对到结尾的一对完成全部的比较。最后一个元素肯定最大的
- 对剩下的元素重复第二步操作,直到只有一个元素为止
1 int[] a=new int[]{2,77,3,4,52,75,2,64,2,3,3435,54,2353,12,5332,3567,88,56}; 2 int temp; 3 for(int i=a.length;i>1;i--){ 4 for(int j=0;j<i-1;j++){ 5 if(a[j]>a[j+1]){ 6 temp=a[j]; 7 a[j]=a[j+1]; 8 a[j+1]=temp; 9 } 10 } 11 System.out.print("第"+(a.length+1-i)+"次排序:"); 12 for(int i1:a){ 13 System.out.print(i1+" "); 14 } 15 System.out.println(); 16 }
2、插入排序
- 从第一个元素开始,该元素可以认为已经被排序。
- 取出下一个元素,在已经排序的元素序列中从后向前扫描。
- 如果该元素(已排序)大于新元素,则将该元素移到下一位置。
- 重复步骤3,直到找到已排序的元素小于或者大于新元素的位置。
1 int[] a=new int[]{3,4,5,2,43,56,3,66,4,43,7,8}; 2 int current; 3 for (int i = 0; i <a.length-1 ; i++) { 4 current=a[i+1]; 5 int preIndex=i; 6 while(preIndex>=0 && current <a[preIndex]){ 7 a[preIndex+1]=a[preIndex]; 8 preIndex--; 9 } 10 a[preIndex+1]=current; 11 System.out.print("第"+(i+1)+"排序:"); 12 for (int j = 0; j <a.length ; j++) { 13 System.out.print(a[j]+" "); 14 } 15 System.out.println(); 16 }
3、选择排序
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序 完毕。
1 int[] a=new int[]{3,4,5,2,43,56,3,66,4,43,7,8}; 2 System.out.println("从小到大排序:"); 3 int temp; 4 for(int i=1;i<=a.length;i++){ 5 int min=i-1; 6 for(int j=i;j<a.length;j++) { 7 if (a[min] > a[j]) { 8 min=j; 9 } 10 } 11 temp=a[min]; 12 a[min]=a[i-1]; 13 a[i-1]=temp; 14 System.out.print("第"+i+"次排序:"); 15 for(int c:a){ 16 System.out.print(c+" "); 17 } 18 System.out.println(); 19 }
查找
1、顺序查找
1 int a[]=new int[]{1,3,3,4,5,3}; 2 int j[]=new int[3]; 3 int b=0; 4 System.out.println("请输入你要查找的数:"); 5 Scanner s=new Scanner(System.in); 6 int num=s.nextInt(); 7 boolean isOk=false; 8 for (int i = 0; i <a.length ; i++) { 9 if(a[i]==num){ 10 j[b]=i; 11 System.out.println("已找到,你找的数是:"+a[i]+" 在数组中下标为:"+j[b]); 12 b++; 13 isOk=true; 14 } 15 } 16 if (isOk==false){ 17 System.out.println("你找的数是"+num+",在目标数组中不存在"); 18 }
2、二分法查找
1 //二分法查找 2 int[] arr=new int[]{1,2,4,5,7,10,24,33,35,36,132,5335}; 3 Scanner s=new Scanner(System.in); 4 System.out.println("请输入你要查找的数:"); 5 int num = s.nextInt(); 6 int min,max,middle; 7 min=0; 8 max=arr.length-1; 9 middle=(min+max)/2; 10 if(min==max){ 11 if(num==arr[middle]){ 12 System.out.println("已找到,查找的数为:"+num+", 在数组中的下标为:"+(middle-1)); 13 }else { 14 System.out.println("未找到,查找的数为:"+num); 15 } 16 } 17 while (min<=max){ 18 if(num>arr[middle]){ 19 min=middle+1; 20 middle=(min+max)/2; 21 } else if (num<arr[middle]) { 22 max=middle-1; 23 middle=(min+max)/2; 24 }else{ 25 System.out.println("已找到,查找的数为:"+num+", 在数组中的下标为:"+middle); 26 break; 27 } 28 } 29 if(min>max){ 30 System.out.println("未找到,查找的数为:"+num); 31 }
学习心得
感觉插入排序有点难理解,当时听得懂,过一会就忘了。
标签:15,min,int,元素,System,王梦龙,2022,排序,out 来源: https://www.cnblogs.com/wanysyswml/p/16483988.html