dijiuzu

 

20220715 第九组 于芮 java基础初养成3(第八天)

 
小白成长日记——第八天
 
  今天是非常受打击的一天,被算法打败了,整个人都不好了,就像一条路,看不到尽头一样,果然又是被毒打的一天,但是我还户继续努力的,我一定可以!!!!
  虽然今天的学习内容有些听不懂,但还是认真作了学习笔记,来看看吧!

数据结构
1.数组(最基本的数据结构,线性表【在这个表中,数据元素之间是一对一的关系,除了第一个和最后一个元素,其余的元素都是首位连接的】)
2.链表(一个连着一个)
3.树
4.图

写程序的思路
1.先完成需求需要的功能
2.根据程序运行的结果进行优化
3.代码重构(减少代码量)
4.提升效率(算法)

二分法查找(数组需要有顺序)
int []arr=new int []{1,2,3,4,5,6,7,8,9};
Scanner in=new Scanner(System.in);
System.out.println("请输入要查找的数字:");
int a=in.nextInt();
//最左边的下标
int left=0;
//最右边的下标
int right=arr.length-1;
if(a<arr[left]||a>arr[right]){
System.out.println("在目标数组中不存在!");
}else {
int c=-1;
while(left<=right){
//找出中间位置
int middle=(left+right)/2;
if(arr[middle]==a){
c=middle;
} else if (arr[middle]>a) {
right=middle-1;

}else{
left=middle+1;
}
}
System.out.println("目标数字的下标是:"+a);
}

排序算法
1.冒泡排序
2.快速排序
3.插入排序
4.选择排序
5.希尔排序
6.归并排序
7.堆排序
8.桶排序

冒泡排序(简便:arrays.sout(arr))
int []arr=new int[]{2,5,1,6,33,88};
//从小到大
//第一个数和后面的数比较大小
//需要两层循环嵌套
//外层循环控制的是徐需要各个数之间比较几轮
//内层循环控制的是每个数真正的比较
//比较几轮=长度-1
for (int i = 0; i < arr.length-1-i; i++) {
for (int j = 0; j < arr.length; j++) {
if(arr[i]>arr[j+i]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}

}
System.out.println("第"+(i+1) +"轮的比较结果是:");
for (int i1 : arr) {
System.out.println( i1+".");

}
System.out.println();

}

选择排序
int []arr=new int[]{234,32,23,34,67,87};
for (int i = 0; i < arr.length; i++) {
//假设最小的下标
int minindex=i;
for (int j = i; j < arr.length; j++) {
if(arr[minindex]>arr[j]){//找到最小值
minindex=j;//保存最小值的下标

}


}int temp=arr[minindex];
arr[minindex]=arr[i];
arr[i]= temp;


}
for (int i : arr) {

System.out.println(i + ".");
}
1.i=0 minindex=0,里层的for循环int j=1;j<7;


插入排序
int[]arr=new int[]{2,43,21,4,567,65,45};
//定义一个参照物
int current;
for (int i = 0; i < arr.length-1; i++) {
current=arr[i+1];
//定义一个元素的下标
int preindex=i;
//当上一个下标是有效的,不能小于0
//并且还要保证当前的数比上一个数小
//此时,才能让当前的数向前移
while(preindex>=0&&current<arr[preindex]){
//移位
//前面的数后移一位
arr[preindex+1]=arr[preindex];
//前面的数后移一位
preindex--;
}
arr[preindex+1]=current;


}
for (int i : arr) {
System.out.println(i+".");
}

数组常规操作
1.数组的反转(arrays是一个数组的工具类)
创建一个等长的数组,把当前的每个元素到这添加到新数组中,将新数组赋值给老数组
2.数组的扩容

 

  虽然理解起来有些困难,但是,经过我的不懈努力,已经有了一些眉目,不要质疑自己,要相信自己哦,我一定可以!!! 

 

posted on 2022-07-15 17:38  于芮  阅读(27)  评论(1编辑  收藏  举报

导航