20220715朱云新

                           JAVA初始的第三天

数据结构

​ 1,数组

​ 最基本的数据结构;是一张表,线性表(数据元素之间是一对一的,除了第一个和最后一个之外,其余元素都是首尾连接,所以数组有顺序)

​ 2,链表

​ 3,树

​ 3,图

算法:

1,线性查找:

​ 简单方便,但不适合数量大的数据。

2,二分查找:

​ 必须要排序。

3,排序算法:

1.冒泡排序
/*
思路分析:
    1,我先拿第一个数和后面的数一一比较大小,如果比这个数小就换位,经过一轮比较之后,最大的数就会在最后
    2,经过数组长度减一次的比较,就会排序完成
    3,外层循环:表示排几轮
    4,里层循环:实现数和数之间的比较
    
*/
int []a = {1,58,46,33,10,5,-8,9,16,78,99,-45,48,33};
int i = 0;
int j = 1;
int m;

    for (i=0;i<(a.length-1);i++){
        for (j=1;j<a.length;j++){
            if (a[j-1]<a[j]) {
                m=a[j];
                a[j]=a[j-1];
                a[j-1]=m;
            }

            }
        }

    for(int b : a){
        System.out.print(b + ",");


}





简易算法:
直接调用方法Arrays.sort(数组)
2,快速排序
3,插入排序
4,选择排序


/**
思路分析
 *第一轮,i等于-。m=0,里层for循环,int j=1; j <a.lenth;
 * if(arr[0])>arr[1]{}.由于if不满足,则继续下一次的比较。
 * j=2 ,if(arr[0]>arr[2]){}.由于if不满足,则继续下一次比较。
 * j= 3,if(arr[0]>arr[3]){}.由于if不满足,则继续下一次比较。
 * j= 4,if(arr[0]>arr[4]){}.由于if不满足,则继续下一次比较。
 * j=5 ,if(arr[0]>arr[5]){}.由于if满足条件,执行了交换操作 ,m=5。
 * j=6 ,if(arr[5]>arr[6]){}.由于if不满足,则继续下一次比较。
 * j=7 ,if(arr[5]>arr[7]){}.由于if不满足,则继续下一次比较。
 * 到此为止,里层for循序执行完毕。m = 5  。执行的
 * int n = a[5];
 * a[5] = a[0];
 * a[0] = n;
 * i = 0 的这次外层循环执行完毕,数组最小的数就在第一位了。
 * 第二轮继续
 * 以此类推到第七轮,排序完毕
 */

int[] a = {1, 58, 46, 33, 10, 5, -8, 9, 16, 78, 99, -45, 48, 33};
int i;
int j;
int n;
for (i = 0; i < a.length ; i++) {
    int m =i;

    for (j =i+ 1; j < a.length; j++) {
        if (a[m] > a[j]) {
            m = j;
            }
        }
    n = a[m];
    a[m]=a[i];
    a[i]=n;
    }
for (int b : a) {
    System.out.print(  b + ",");
}
5,希尔排序
6,堆排位
7,归并排序
8,桶排序

数组反转;

int[] a = {1, 58, 46, 33, 10, 5, -8, 9, 16, 78, 99, -45, 48, 33};
int[]b = new int[a.length];
for (int i=(a.length-1);i>=0;i--){
    for (int j =0 ; j<a.length;j++){
       if((i+j)==(a.length-1)) {
           b[j] = a[i];
       }
    }
}
数组的扩容:

​ int []arr=new int[]{3,4,6};
​ int [] temp=new int[6];//定义一个临时的数组
​ for (int i = 0; i < arr.length; i++) {
​ temp[i]=arr[i];
​ }
​ arr=temp;
​ for (int i : arr) {
​ **System.out.println(i);
​ }

import java.util.Scanner;

public class Sddd {**
public static void main(String[] args) {
// 数据结构
// 1.数组是最基本的数据结构,是一张表,线性表(数据元素之间是一对一,除了第一个和最后一个之外,其余的元素都是收尾连接)
// 2.链表
// 3.树、
// 4.图

    /*
    找出一个数在数组中的位置
    在数组中是否存在,如果存在,返回下标,如果不存在还原-1,

    */
    int[] arr = new int[]{1, 58, 46, 33, 10, 5, -8};
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入一个数");
    int num = sc.nextInt();
    boolean flag = false;
    int index = -1;
    for (int i = 0; i < arr.length; i++) {
        if (arr[i] == num) {

// System.out.println("你要找的数是:"+num+"在目标数组中的下标是:"+i);
flag = true;
index = i;
break;
}
// else{
//// System.out.println("你要找的数是:"+num+"在目标数组中的下标不存在");
// }
}
if (flag) {
System.out.println("你要找的数是:" + num + "在目标数组中的下标是:" + index);
} else {
System.out.println("你要找的数是:" + num + "在目标数组中的下标不存在");
}
}
}****
学习感受:
1.今天学习了算法,不是很懂,但是可以简单写一些
2.自己钻研了一些,各种排序,会有一些相同点
3.感觉java有点杂,但是会自己努力的

posted @   朱云新  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示