2022-07-15 第六组 润土 Java03数据结构学习笔记
数据结构:
数组:最基本的数据结构(线性表)
链表:单向链表,双向链表
树:二叉树
图:深度优先遍历、广度优先遍历
查找:
线性查找
折半查找
排序:
冒泡排序*
快速排序
插入排序*
选择排序*
希尔排序
堆排序
归并排序
桶排序
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;
}
}
}
2022-07-15 第六组 润土 Java03数据结构学习笔记的更多相关文章
- 2022-07-14 第六组 润土 Java02学习笔记
1.引用数据类型 Scanner类: Scanner shuru=new Scanner(System.in); int a=shuru.nextInt();//输入整型 String b= shur ...
- 2022-07-13 第六组 润土 Java01学习笔记
1.数据类型: 基本数据类型: 整型: byte 字节型 -128-127 1个字节 short 短整型 2个字节 int 整型 4个字节 long 长整型 8个字节 浮点型: float 单精度 4 ...
- 2022-07-09 第六组 润土 CSS学习笔记
HTML:用来描述网页的一种语言. 超文本语言.动画.音频.视频.特效.超链. 用标签定义网页 浏览器 流行浏览器: IE微软宣布永久关闭 firefox火狐 Chrom谷歌 Sarifi vscod ...
- 2022-07-11 第六组 润土 JavaScript01学习笔记
1.JS的数据类型: 数字 字符串 布尔型 空(null) unefined(未定义) 2.定义变量 var let(不可重复) const(常量不可更改) 3.复杂的数据类型: 数组:一个变量对应多 ...
- 2022-07-12 第六组 润土 JavaScript02学习笔记
1.循环语句 for循环: for(let i=0;i<10;i++){循环体} while循环: while(i<10){循环体}: do... while...循环: do{循环体}w ...
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
sql server 关于表中只增标识问题 由于我们系统时间用的过长,数据量大,设计是采用自增ID 我们插入数据的时候把ID也写进去,我们可以采用 关闭和开启自增标识 没有关闭的时候 ,提示一下错 ...
- Linux用户、组帐号和权限(学习笔记九)
一.用户分类 超级用户:root 普通用户:由超级用户和管理员创建,一般只在自己的目录中有完全的权限 程序用户: 二.用户账号管理 常用命令: useradd:添加用户 userdel:删除用户 pa ...
- 第1-5章 慕课网微信小程序开发学习笔记
第1章 前言:不同的时代,不同的Web --微信小程序商城构建全栈应用 http://note.youdao.com/noteshare?id=a0e9b058853dbccf886c1a890594 ...
- Spring Boot 学习笔记(六) 整合 RESTful 参数传递
Spring Boot 学习笔记 源码地址 Spring Boot 学习笔记(一) hello world Spring Boot 学习笔记(二) 整合 log4j2 Spring Boot 学习笔记 ...
随机推荐
- 操作系统实现-boot.asm实现
博客网址:www.shicoder.top 微信:18223081347 欢迎加群聊天 :452380935 这一次我们进入操作系统实现的真实编码, 这一次主要是完善对boot.asm文件的全部实现, ...
- 【软件构造】Mutable类型与Immutable类型
[软件构造]Mutable类型与Immutable类型 1.前言 在软件构造这门课中,对mutable类型和immutable类型的深入理解,有助于后续ADT.可维护性.可复用性的学习,因此我们有必要 ...
- JS运算符,流程控制,函数,内置对象,BOM与DOM
运算符 1.算数运算符 运算符 描述 + 加 - 减 * 乘 / 除 % 取余(保留整数) ++ 递加 - - 递减 ** 幂 var x=10; var res1=x++; '先赋值后自增1' 10 ...
- 152. Maximum Product Subarray - LeetCode
Question 152. Maximum Product Subarray Solution 题目大意:求数列中连续子序列的最大连乘积 思路:动态规划实现,现在动态规划理解的还不透,照着公式往上套的 ...
- 824. Goat Latin - LeetCode
Questioin 824. Goat Latin Solution 题目大意:根据要求翻译句子 思路:转换成单词数组,遍历数组,根据要求转换单词 Java实现: 用Java8的流实现,效率太低 pu ...
- 搭建自己的个人web项目指南 ---(一)服务器购买与基础配置 | windows连接到自己的云服务器
(一)服务器购买与基础配置 | windows连接到自己的云服务器 一.服务器选购指南 厂商选择 目前市面上提供服务器租用的厂商很多,比较知名的还是阿里云和腾讯云,两家的稳定性都非常不错,小伙伴们可以 ...
- 一个全新的Vue拖拽特性实现:“移动”部分
关于拖拽 CabloyJS提供了完备的拖拽特性,可以实现移动和调整尺寸两大类功能,这里对移动的开发进行阐述 关于调整尺寸的开发,请参见:拖拽:调整尺寸 演示 开发步骤 下面以模块test-party为 ...
- .NET C#基础(6):命名空间 - 组织代码的利器
0. 文章目的 面向C#新学者,介绍命名空间(namespace)的概念以及C#中的命名空间的相关内容 1. 阅读基础 理解C与C#语言的基础语法 2. 名称冲突与命名空间 2.1 一个生活例 ...
- C#和Java,究竟选哪个方向?我只说事实,你自己分析……
好久没到园子里面逛了,回来看了看,.NET有点式微呀?Java/Spring/Linux--比以前多了很多,为什么?博客园可是.NET的大本营了呀! 好吧,我承认,飞哥也动摇了,去年在ASP.NET的 ...
- python实现对简单的运算型验证码的识别【不使用OpenCV】
最近在写我们学校的教务系统的手机版,在前端用户执行绑定操作后,服务器将执行登录,但在登录过程中,教务系统中有个运算型的验证码,大致是这个样子的: 下面我们开始实现这个验证码的识别. 1.图片读取 从网 ...