
算法
拼搏奋斗,无悔于青春
对网络安全和AI特别感兴趣,后面将主要精力放在AI 网络安全 java全栈开发,励志成为一名优秀的架构师!天行健,君子以自强不息,君子亦怀感恩之心!
展开
-
大O表示法
什么是大O表示法?其实刚开始学习数据结构,我也没有理解其本质?而且教科书有一个通病,就是说的太晦涩难懂了?那到底啥是大O表示法?大O表示法为什么产生?产生的价值和意义是什么?大O表示法是为了衡量算法的快慢二产生的.那问题有来了?怎么来衡量一个算法的好坏了?有人说是时间?我不同意!因为算法有很多不同的动作,也就是指令,每个指令消耗的时间不同,那么用时间来进行衡量肯定不对了,不准确那用什么来衡量了?就是操作数?大家要理解一个东西.举个例子吧比如说在一个已经排好序的数组中找一个数,有俩种方法,一原创 2022-03-13 22:49:53 · 623 阅读 · 0 评论 -
二分查找的总结
对于二分查找,是什么了?其实就是在一组已经排好序的数中进行查找一个数,在大量数据的情况下,二分查找的效率远远大于顺序查找,二分查找的大O阶为O(logn),而顺序查找是O(n),在数据量越大的情况下并且排序的情况下,二分查找的效率远远大于顺序查找但是要注意一个问题,二分查找的int mid=left+(right-left)/2,这样做是为了防止溢出?为什么这样做能防止溢出了?因为按照课本上说,int mid=(left+right)/2,这样(left+right)很容易超出int的范围,所以推原创 2022-03-13 22:22:58 · 105 阅读 · 0 评论 -
数据结构中线性表的操作
对于数据结构中线性表的操作总结如下:其在定义结构体中,因为其下标从0开始,序列从0开始,而且要注意,其间对于函数的传值是序列,操作和表示是下标原创 2021-12-02 22:12:45 · 130 阅读 · 0 评论 -
线性表查找值
对于线性表进行查找先建立线性表,然后查找,先进行顺序查找,其顺序查找可以分为俩种情况其一是不设置监视哨,其表示为while(n>=1&&l.r[n].key!=k)其二是设置监视哨,就是在数组的第0个位置,进行从后到前的查找,如果最后找到了返回值是0,那么就是没有找到,否则返回相应的位置,第二种的判定条件,while(l.r[z].key!=k)注意:**其第二种的判定条件明显比一中要少,那么查找效率也会高很多,所以能用第二种就不用第一种,效率高还有就是用二分查找必须排好序原创 2021-12-02 19:57:09 · 243 阅读 · 0 评论 -
选择排序C语言
什么是选择排序了(注:从小往大排)按照我个人的理解就是:1.在一堆数中找到最小值,然后和第一个元素交换位置2.第一个最小的数已经确定了,然后在剩下的数中找第二小的数,再和第二个位置上的数进行交换,3.这样一个一个就排好了其一共要排n-1轮其第一次排序要进行n-1次循环,第二次要进行n-2次循环,所以一共要进行**(n-1)+(n-2)+…+1= 2/(n*(n-1));所以其时间复杂度为O(n*n);**代码如下:/*Select_sort.c --选择排序 */#include&l原创 2021-11-18 22:38:25 · 505 阅读 · 0 评论 -
二维数组和稀疏数组之间的相互转化
用Java实现二维数组(棋盘)和稀疏数组的转化:首先创建二维数组:二维数组和稀疏数组的转化:1.得到二维数组的非零个数sum2.创建稀疏数组sparese int[sum+1] [3]3. 将二维数组的有效数字存入到 稀疏数组中稀疏数组和二维数组的转化:1.读取稀疏数组的第一行,根据得到的数据,创建二维数组2.在把稀疏数组的后几行的数据写入赋给那个二维数组代码如下:package com.atguigu.sparsesarray;//SparseArray.java原创 2021-11-03 00:27:31 · 108 阅读 · 0 评论 -
二分查找法
对于二分查找法,就是猜数字游戏,大家都了解,二分查找法的前提就是一堆数字必须要排好序,这是前提,然后折中查找,这样效率比一个一个查找效率很高代码展示如下:import java.util.Arrays;import java.util.Scanner;public class Test { public static void main(String[] args) { int[] arr = {10, 65, 87, 99, 102, 145, 467};原创 2021-08-30 20:00:43 · 99 阅读 · 0 评论 -
选择排序的一些见解
头开始选中数组元素,与其后面的元素依次进行俩俩比较,将大的数据放在后面,依次从前到后选中每个元素,直至所有元素排完要排n-1轮,要排(n*(n-1))/2次import java.util.Arrays;public class Test { public static void main(String[] args) { //选择排序 int [] arr={108,54,848,85465,652,6851}; System.out.pr原创 2021-08-26 23:56:08 · 91 阅读 · 0 评论 -
冒泡排序的展示
冒泡排序就是对俩个相邻的元素进行比较,较大的排在后面,较小的排在前面,直至所有数据都排完,一个数组有n个元素,其要排n-1轮,其一共要排的次数为(n*(n-1))/2代码展示:import java.util.Arrays;public class Test { public static void main(String[] args) { int [] arr={10,20,54,55,58,6454,4454}; //冒泡排序 Syst原创 2021-08-26 12:03:50 · 99 阅读 · 0 评论