标签:15 min int 元素 System 王梦龙 2022 排序 out
学习内容思维导图

主要内容
数据结构
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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。
