1. 数组的操作
1.1 数组的反转
int[] arrs={3,5,7,8,9};
编写程序,让arrs中的数据进行反转{9,8,7,5,3}
1.2数组的查找
① 顺序查找
从头到尾一个一个的找!
② 二分查找
对数组有一个要求:数组必须是有序(大小)的!
int num=3;
int[] arrs={3,5,7,8,9};//从小-大的顺序
1.3 排序
int[] arrs={3,15,7,28,9};
编写程序,让arrs是有序的!(小-大、大-小)
① 冒泡排序(5个数据)
冒第一个泡,写一个循环,让数组中的最大值出现在数组的最后一个位置
冒第二个泡,写一个循环,让数组中的第二大值出现在数组的最倒数第二个位置
...
两两对比,大值放在后面!5个数数据,冒最大的泡,需要对比多少次?4次
{3,15,7,28,9}
{3,7,15,28,9}
{3,7,15,28,9}
{3,7,15,9,28}
② 简单选择排序
找到数组中的最大值,放在最后一个位置
找到数组中第二大的值,放在倒数第二个位置
{3,15,7,28,9}
int max=28;
int index=3;
将index和最后一个位置进行交换
{3,15,7,9,28}
int max=15;
int index=1;
将index和倒数第二个位置进行交换
{3,9,7,15,28}
示例:数组的反转(两种思路)
public class Demo1{
public static void main(String[] args){
int[] arrs={3,5,7,8,9,5};// 6/2=3 5/2=2
//1. 新建一个数组,然后倒序复制
/*int[] newArrs=new int[arrs.length];
for(int i=0,j=arrs.length-1;i<arrs.length;i++,j--){
newArrs[i]=arrs[j];
}
arrs=newArrs;
for(int i=0;i<arrs.length;i++){
System.out.println(arrs[i]);
}*/
//2. 对原数组首尾交换 【设置临时变量,交换值】
for(int i=0;i<arrs.length/2;i++){
/*
0 4 i arrs.length-i-1
1 3
*/
int temp=arrs[i];
arrs[i]=arrs[arrs.length-i-1];
arrs[arrs.length-i-1]=temp;
}
for(int i=0;i<arrs.length;i++){
System.out.println(arrs[i]);
}
}
}
示例:二分查找(数组必须已排序)
public class Demo2{
public static void main(String[] args){
int[] arrs={3,5,7,8,9,15,26};
int num=14;//找num在数组中的位置
//left和right就是我们查找的范围
int left=0;
int right=arrs.length-1;
int mid=(left+right)/2;//查找范围的中间索引
int index=-1; //默认设置-1,没找到
while(left<=right){//循环多少次不清楚!
if(num==arrs[mid]){
index=mid;
break;
}else if(num>arrs[mid]){//小了
left=mid+1;
}else if(num<arrs[mid]){//大了
right=mid-1;
}
mid=(left+right)/2;//mid要从新计算一次
}
System.out.println(index);
}
}
输出:
-1
示例:冒泡排序
public class Demo3{
public static void main(String[] args){
int[] arrs={3,15,7,28,9};//五个数据,需要冒几个泡呢?4个泡
for(int j=0;j<arrs.length-1;j++){//控制冒几个泡
for(int i=0;i<arrs.length-1-j;i++){
if(arrs[i]<arrs[i+1]){ // 前<后,交换,则按降序排列;反之 arrs[i]>arrs[i+1] 则升序
//如果进入if,需要交换位置
int temp=arrs[i];
arrs[i]=arrs[i+1];
arrs[i+1]=temp;
}
}
}
//1. 冒第一个泡
/*for(int i=0;i<arrs.length-1-0;i++){
if(arrs[i]>arrs[i+1]){
//如果进入if,需要交换位置
int temp=arrs[i];
arrs[i]=arrs[i+1];
arrs[i+1]=temp;
}
}
//arrs={3,7,15,9,28}
//将第二个泡,放在倒数第二个位置
for(int i=0;i<arrs.length-1-1;i++){
if(arrs[i]>arrs[i+1]){
//如果进入if,需要交换位置
int temp=arrs[i];
arrs[i]=arrs[i+1];
arrs[i+1]=temp;
}
}
//arrs={3,7,9,15,28}
//将第三个泡,放在倒数第三个位置
for(int i=0;i<arrs.length-1-2;i++){
if(arrs[i]>arrs[i+1]){
//如果进入if,需要交换位置
int temp=arrs[i];
arrs[i]=arrs[i+1];
arrs[i+1]=temp;
}
}*/
for(int i=0;i<arrs.length;i++){
System.out.println(arrs[i]);
}
}
}
输出:
28
15
9
7
3
示例:简单选择排序
public class Demo4{
public static void main(String[] args){
int[] arrs={3,15,7,28,9};
//找第一个最大值及其下标,然后和最后一个位置进行交换
for(int j=0;j<arrs.length-1;j++){//找最大值的次数?4
int max=arrs[0];
int index=0;
for(int i=1;i<arrs.length-j;i++){
if(arrs[i]>max){ //后>前,交换,则升序
max=arrs[i];
index=i;
}
}
// index 和 arrs.length-1-j
if(index!=arrs.length-1-j){
int temp=arrs[index];
arrs[index]=arrs[arrs.length-1-j];
arrs[arrs.length-1-j]=temp;
}
}
for(int i=0;i<arrs.length;i++){
System.out.println(arrs[i]);
}
}
}
输出:
3
7
9
15
28
【10】安装 idea
ideaIU-Ultimate-2019.2.3.exe
3. idea的配置
项目中包含n个模块(每一天新建一个新的模块)
新建模块:在项目上,右键->new->module
选择java
jdk要选择自己电脑上安装的jdk1.8(第一次如果没有,后面也是添加一个)
起一个模块名
java0224(项目)->day06(模块)->src(源码)->右键-new-java class(新建java文件)
编写源程序-->编译是自动的-->直接运行
main方法运行不了,解决步骤:
① 在当前项目内创建文件目录out
② 在弹框点击ok后,在最下方有一个目录选择,选择刚刚创建的out目录
项目创建的时候是空项目!(创建非空项目也是需要选择jdk)
配置目录的介绍:
1. 安装完idea之后,会在c盘默认生成两个目录(idea的所有配置信息)
C:\Users\用户名\.IntelliJIdea2019.2\system和config
2. 如果想要回到刚刚安装的情况!可以将这两个目录删除!(激活也需要重新激活)
3. 详细配置
3.1 运行内存的配置(idea在电脑占多大内存)
idea的安装目录/bin/idea64.exe.vmoptions
-Xms512m
-Xmx1500m
-XX:ReservedCodeCacheSize=500m
3.2 如何打开详细配置界面
(1)显示工具栏
(2)选择详细配置菜单和按钮
3.3 默认启动项目配置
3.4 设置整体主题
(1)选择主题
(2)设置菜单和窗口字体和大小(修改的并不是编辑器的字体大小)
3.5 编辑器
(1)编辑器主题
(2)字体大小与颜色(只修改编辑器的字体大小)
3.6 自动提示功能
3.7 设置编码(编辑器的编码)
必须要配置成utf-8(通用一致)
3.8 设置自动编译
3.9 取消自动更新(必须做的)
3.10 项目的JDK设置
4. 快捷键
- 保存:Ctrl + S
- 剪切:Ctrl + X
- 粘贴:Ctrl + V
- 复制:Ctrl + C
- 全选:Ctlr + A
- 撤销:Ctrl + Z
万能提示:Alt + 回车 ★
使用XX块环绕:Ctrl + Alt + T
在当前光标下一行插入空行开始编辑:Shift + 回车
在当前光标上一行插入空行开始编辑:Ctrl+Alt+回车
复制行:Ctrl+D
删除行:Ctrl + Y
- 单行注释:Ctrl + /
- 多行注释:Ctrl + Shift + /
搜索:ctrl+n
取消:双击shift是搜索
快捷键:idea支持自定义和修改(前期先不要修改)
敲了一个快捷键,但是你不知道是什么?直接问!
5. 模板
main:public static void main(String[] args){}
sout:System.out.println();
soutv:System.out.println("变量名 = " + 变量);
变量.sout/soutv System.out.println("变量名 = " + 变量);
fori:for循环
模板:idea也是可以自定义的(前期先不要自定义)