2022-07-15 第六组 润土 Java03数据结构学习笔记
2024-09-02 20:29:36
数据结构:
数组:最基本的数据结构(线性表)
链表:单向链表,双向链表
树:二叉树
图:深度优先遍历、广度优先遍历
查找:
线性查找
折半查找
排序:
冒泡排序*
快速排序
插入排序*
选择排序*
希尔排序
堆排序
归并排序
桶排序
1、查找
线性查找:
int [] arr=new int []{1,58,46,33,10,5,-58};
Scanner sc=new Scanner(System.in);
System.out.print("请输入一个数:");
int number=sc.nextInt();
int j=-1;
for(int I=0; i<arr.length; i++){//循环遍历数组,利用j存储下标来输出提示等。
if(arr[i]==number){
j=i;
}
}
if(j==-1){
System.out.print("你要找的数是:"+number+" 在目标数组不存在");
} else if (j!=-1) {
System.out.print("你要找的数是:"+number+" 在目标数组中的下标是:"+j);
}
折半查找:
int[] arr = new int[]{1, 2, 3, 4, 5, 6, 7};
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个数字:");
int number = sc.nextInt();
int left = 0, right = arr.length - 1;//两个下标
if (number < arr[left] || number > arr[right]) {
System.out.println("数字不存在");
} else {
int res = -1;
while (left <= right) {
int middle=(left+right)/2;
if(arr[middle]==number){
res=middle;break;
} else if (number<arr[middle]) {
right=middle-1;
}else {
left=middle+1;
}
}
System.out.print("下标:"+res);
}
2、排序
冒泡排序:
int [] arr=new int []{1,58,46,33,10,5,-8};
int i=0,j=0;
while(i<(arr.length-1)){
while (j< (arr.length-(i+1))){
if(arr[j]>arr[j+1]){
int max;
max=arr[j+1];
arr[j+1]=arr[j];
arr[j]=max;
}
j++;
}
j=0;
i++;
}
int n=0;
System.out.println("long "+arr.length);
while(n< arr.length){
System.out.print(arr[n]+" ");
n++;
}
选择排序:
int [] arr=new int[]{1,25,48,12,10,-8,127,56};
for(int i=0;i<arr.length-1;i++){
int min=i;
int temp=arr[i];
for(int j=(i+1);j<arr.length;j++){
if(arr[i]>arr[j]){
arr[i]=arr[j];
min=j;
}
}
arr[min]=temp;
System.out.print("第"+(i+1)+"次:");
for (int n=0;n<arr.length;n++){
System.out.print(arr[n]+" ");
}
System.out.println();
}
插入排序:
int [] arr=new int[]{10,5,2,18,3,50,100,-1};
for(int i=0;i<arr.length-1;i++){
int min=arr[i+1];
for(int k=i;k>0;k--){
if(min<arr[k]){
for(int j=i;j>k-1;j++){
arr[j]=arr[j-1];
}
break;
}
}
}
最新文章
- Android studio每次启动卡在fetching Android sdk compoment information的解决方案
- C# Use Pop3Client to read gmail
- 理解并使用.NET 4.5中的HttpClient
- OGNL和Struts2标签
- arcgis server manager - An error has occured on the server. For details please check the Event (Application) log on the web.
- 强大的Mockito测试框架(转)
- JAVA类与对象(课堂总结)
- JSON和java对象的互转
- 深入理解JVM(六)&mdash;&mdash;类加载器原理
- 使用 MarkDown &; DocFX 升级 Rafy 帮助文档
- c/c++ 用前序和中序,或者中序和后序,创建二叉树
- CentOS7安装Jenkins自动化部署maven项目
- C# 之 @ Assembly
- BeanFactory和FactoryBean的区别
- leetcode739
- 合并数组,改变原数组apply与不改变原数组
- js计算器---转
- Java中的访问权限细谈
- android 量产软件改动信息(持续更新)
- 安装JIRA
热门文章
- 【CSAPP】Cache Lab 实验笔记
- SQL注入之information_schema
- NS2中couldn‘t read file “../tcl/mobility/scene/cbr-3-test“: no such file or directory解决方法
- Yapi Docker 部署
- 并发编程之volatile与JMM多线程内存模型
- python 动态规划(背包问题和最长公共子串)
- python网络自动化ncclient模块,netconf协议检索与下发交换机配置
- 一文看懂 ZooKeeper ,面试再也不用背八股(文末送PDF)
- 109_Power Pivot客户ABC(帕累托)分析度量值写法(非计算列)
- 印尼医疗龙头企业Halodoc的数据平台转型之Lakehouse架构