栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

数据结构与算法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构与算法

数据结构与算法

这是记录数据结构的原理以及到算法的一个分享,如果大家觉得有什么问题,或者是觉得我哪些地方错了,欢迎大家留言,我会及时的回复大家消息,如果能帮到你一些的话,希望可以点个赞,最后感谢大家来看我写的文章


提示:选择你感兴趣的去看吧

文章目录
  • 数据结构与算法
  • 前言
  • 1.什么是数据结构?
  • 2常见的数据结构
  • 3.什么是算法
  • 4.什么是复杂度
  • 5.手写数据结构-Java版
  • 6.数组
  • 7.链表
  • 8.队列
  • 9.栈
  • 10.树
  • 11. 二叉树
  • 12.二叉树常用算法
  • 13.二叉搜索树
  • 14.二叉平衡树
  • 15.红黑树
  • 16.B树
  • 17.B+树
  • 18.堆
  • 19.图
  • 20.位图
  • 21.跳跃表
  • 22.散列表
  • 23.Java中的组合数据结构
  • 24.常见算法
  • 25.简单位运算
  • 26.排序算法
    • (1)选择排序
    • (1)冒泡排序
    • (3)插入排序
    • (4)希尔排序
    • (5)快速排序
    • (6)归并排序
    • (7)堆排序
    • (8)桶排序
    • (9)基数排序
    • (10)计数排序
    • (11)随机排序
  • 27.对数器--随机测试结果
  • 28.算法问题--简单问题求解
  • 29.算法问题--滑动窗口
  • 30.算法问题--链表
  • 31.算法问题--递归
  • 32.算法问题--程序设计
  • 33.算法问题--树
  • 34.算法问题--图
  • 35.算法问题--动态规划
  • 36.算法问题--贪心算法
  • 37.算法问题--数学求解
  • 38.算法问题--脑筋急转弯
  • 39.算法问题--最贵算法
  • 总结


前言

提示:为什么要做这个分享?


1.什么是数据结构? 2常见的数据结构 3.什么是算法
  • 1.有具体的问题
  • 2.有涉及解决这个问题的具体流程
  • 3.有评价处理流程的可量化指标
  • 4.有穷性

从怎么算不知道怎么试算出结果–>既直到怎么算,也知道怎么尝试算出
所谓的图灵机就是找出一个原型把不知道怎么算但是知道怎么试的东西变成理论
计算机科学之所以称为科学是因为我们明确知道怎么尝试的流程,才使得我们这个科学变得有魅力变成一个计算科学

4.什么是复杂度 5.手写数据结构-Java版 6.数组 7.链表 8.队列 9.栈 10.树 11. 二叉树 12.二叉树常用算法 13.二叉搜索树 14.二叉平衡树 15.红黑树 16.B树 17.B+树 18.堆 19.图 20.位图 21.跳跃表 22.散列表 23.Java中的组合数据结构 24.常见算法 25.简单位运算 26.排序算法 (1)选择排序

选择排序1:

    public void selectionSort(int[] arr) {

        if (arr == null || arr.length < 2) {
            return;
        }
        for (int i = 0; i < arr.length; i++) {

            for (int j = i + 1; j < arr.length; j++) {
                if (arr[i] < arr[j]) {
                    swap(arr, i, j);
                }
            }
        }
    }

     public static void swap(int[] arr, int x, int y) {
        int tempVal = arr[x];

        arr[x] = arr[y];

        arr[y] = tempVal;
    }

选择排序2:

public static void selectionSort(int[] arr) {

        if (arr == null || arr.length < 2) {
            return;
        }

        for (int i = 0; i < arr.length; i++) {

            int minVal = i;
            for (int j = i + 1; j < arr.length; j++) {
                minVal = arr[minVal] < arr[j] ? minVal : j;
            }
            swap(arr, i, minVal);
        }

    }

    public static void swap(int[] arr, int x, int y) {
        int tempVal = arr[x];

        arr[x] = arr[y];

        arr[y] = tempVal;
    }
(1)冒泡排序

冒泡排序1:

public static void bubbleSort(int[] arr) {
        if (arr == null || arr.length < 1) {
            return;
        }
        int len = arr.length;
        for (int i = len - 1; i >= 0; i--) {
            for (int j = 1; j <= i; j++) {
                if (arr[j] < arr[j - 1]) {
                    swap(arr, j, j - 1);
                }
            }
        }
    }

    public static void swap(int[] arr, int x, int y) {
        int tempVal = arr[x];

        arr[x] = arr[y];

        arr[y] = tempVal;
    }

冒泡排序2:

 public static void bubbleSort2(int[] arr) {
        if (arr == null || arr.length < 1) {
            return;
        }
        int len = arr.length;
        boolean flag = true;
        for (int i = len - 1; i >= 0; i--) {
            for (int j = 1; j <= i; j++) {
                if (arr[j] < arr[j - 1]) {
                    swap(arr, j, j - 1);
                    flag = false;
                }
            }
            if (flag) {
                break;
            }
        }
    }
 public static void swap(int[] arr, int x, int y) {
        int tempVal = arr[x];

        arr[x] = arr[y];

        arr[y] = tempVal;
    }

冒泡排序3:

public static void bubbleSort3(int[] arr) {
        if (arr == null || arr.length < 1) {
            return;
        }
        int n = arr.length - 1;
        while (true) {

            int last = 0;

            for (int i = 0; i < n; i++) {
                if (arr[i] > arr[i + 1]) {
                    swap(arr, i, i + 1);
                    last = i;
                }
            }
            n = last;
            if (n == 0) {
                break;
            }

        }
    }

    public static void swap(int[] arr, int x, int y) {
        int tempVal = arr[x];

        arr[x] = arr[y];

        arr[y] = tempVal;
    }

冒泡排序4:

(3)插入排序 (4)希尔排序 (5)快速排序 (6)归并排序 (7)堆排序 (8)桶排序 (9)基数排序 (10)计数排序 (11)随机排序 27.对数器–随机测试结果 28.算法问题–简单问题求解

1.求1! +2! +3! +…N!的阶乘
第一种暴力求解:

   public int result(int i) {

        int sum = 0;
        for (int j = 1; j <= i; j++) {
            sum += factorial(j);
        }
        return sum;
    }


    public int factorial(int i) {

        int cur = 1;

        for (int j = 1; j <= i; j++) {
            cur *= j;
        }
        return cur;
    }
    

第二种:代码优化

 public int result(int i) {

        int cur = 1;

        int sum = 0;

        for (int j = 1; j <= i; j++) {
            cur *= j;
            sum += cur;
        }
        return sum;
    }

java打印多边形

 

    public static void printSquare(int n) {
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                System.out.print("* ");
            }
            System.out.println();
        }
    }

    
    public static void printTriangle(int n) {
        for (int i = 0; i < n; i++) {
            for (int j = 0; j <= i; j++) {
                System.out.print("* ");
            }
            System.out.println();
        }
    }

    
    public static void printHandstandTriangle(int n) {
        for (int i = 0; i < n; i++) {
            for (int j = n - 1; j >= i; j--) {
                System.out.print("* ");
            }
            System.out.println();
        }
    }

    
    public static void printRealTriangle(int n) {

        for (int i = 1; i <= n; i++) {
            //第一层打印1,第二层打印3,第三层打印5

            for (int j = n; j > i; j--) {
                System.out.print(" ");
            }
            for (int j = 1; j <= 2 * i - 1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }

    
    public static void printNoRealsTriangle(int n) {
        for (int i = n; i > 0; i--) {

            for (int j = 0; j <= n - i; j++) {
                System.out.print(" ");
            }
            for (int j = 0; j < 2 * i - 1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }

    
    public static void printRhombus(int n) {
        printRealTriangle(n);
        printNoRealsTriangle(n - 1);
    }

    
    public static void printheartShaped() {
        for (float y = (float) 1.5; y > -1.5; y -= 0.1) {
            for (float x = (float) -1.5; x < 1.5; x += 0.05) {
                float a = x * x + y * y - 1;
                if ((a * a * a - x * x * y * y * y) <= 0.0) {
                    System.out.print("*");
                } else {
                    System.out.print(" ");
                }

            }
            System.out.println();
        }

    }
29.算法问题–滑动窗口 30.算法问题–链表 31.算法问题–递归 32.算法问题–程序设计 33.算法问题–树 34.算法问题–图 35.算法问题–动态规划 36.算法问题–贪心算法 37.算法问题–数学求解 38.算法问题–脑筋急转弯 39.算法问题–最贵算法 总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1036882.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号