学习日记[5]

更新於 發佈於 閱讀時間約 5 分鐘

先完成昨天剩下的任务吧,图片和视频在计算机中的存储方式。

记得上文说过,图片和音频的存储方式相似,但只是图片其中的一种。图片大抵有两种存储方式,分别是位图和矢量图。位图的存储方式就和音频的存储方式相同,采样,量化和存储。采样:位图的样本是像素,整张图片就是有一个个像素点拼出来的,所以可以理解成一块拼图。固然把每一小块用尽可能多的像素点表示出来图片会很清晰,但问题也是一样,存储空间不足。所以一小块到底该用多少个像素点来表示就成了一个问题,通常我们把这种参数称为解析率,形象一点说就是每一小块到底该用多少块拼图表示。量化:我们就需要搞定每一个像素点用多少位存储和如何存储,毕竟这不像是音频里面的样本都是数字,这里的都是颜色,我们需要用一种方式来存储一种颜色。统一的方式是真彩色模式,用24位存储一个像素,并且把这个24位像素分为三等分,分别用来存储R(red),G(green),B(blue)三种颜色。用十进制表达出来就是(R,G,B),这里的每一个字母都是有范围的(0-255,用无符号整数表示八位二进制数的范围就是这个),所以纯红色的表达方式就是(255,0,0),最后将这些图片中像素点的无符号二进制整数的值存储进计算机即可。但是真彩色可以表示的颜色是2^24种,而如果我们只需要其中的一部分就够用了,可以用索引色模式。相信看到这里你也就清楚了,索引色模式其实也就是在真彩色模式中提取一些颜色并赋予其新的编码(通常来说是256种颜色)。说的不太准确,应该是放在一个八位存储空间内,这也就是为什么最多可存储的是256种颜色。

另外一种是矢量图,也就是用矢量、数学公式存储一个图片。将一张图片划分为若干个几何体,每一个几何体都用一系列的数学公式表示出来并用特殊的编码方式存储,需要显示图片时就将所需要的图片比例输入该系统,该系统再将一系列该比例下的参数代入公式中并且显示出来。用这种方式存储的图片无论放多大都是清晰的。因为是根据用户提供的数据来提供服务,所以也叫作面向对象图片(这里提到了面向对象的思想,具体的后面学到java再说吧)。

图片我们知道是如何存储的了,那么视频也就简单了。视频就是动起来的图片,每一张图片的名字改成了帧,也就是视频由帧组成的,帧数越高,视频看起来也就更灵动。知道了这个,视频也就是存储一张张图片,需要的时候将其解析出来即可。

昨天的任务完成了,那就开始今天的内容吧。数据结构,感觉有点像是以前说过的计算机外部数据的存储方式,先不管了,等学到再说吧。数据结构分为数据的逻辑结构、物理结构和数据之间的运算。逻辑结构又可以分为线性结构和非线性结构。线性结构的概念很简单,数据之间就像一条线串起来的一般,是一一对应的关系。非线性结构分为树,图与集合。树是一对多的关系,由于看起来很像树根,所以形象地称之为树。图是多对多的关系,没有固定的形状。集合是借用数学的概念(不同学科的根都是一样的),就是在集合中的元素都是平等的,不存在从属关系。物理结构就是逻辑结构在计算机中的实现方式,有顺序存储和链式存储两种方式。顺序存储是将数据都放在相邻的内存地址中,而链式存储是放在不相邻的内存地址中,但是她们个个数据之间都是有逻辑关系的。也就是说,顺序存储是逻辑位置都相邻,而链式存储是逻辑相邻但是位置不相邻。数据之间的运算包括但不仅限于查找,排序和删除。

然后介绍了两个衡量算法的特征——空间复杂性和时间复杂性。空间复杂性是指应用程序在计算机当中所占存储空间的大小,时间复杂性是指程序在计算机当中运行所需要的时间。空间复杂性相对来说更好的衡量,实在不行我们直接看程序大小就行,但是时间复杂度的影响因素有很多,比如计算机性能,编程语言的高级程度,编译和解释的选择,问题的难易程度等。性能越高,语言越低级(这里确实是低级,越接近01,运算速度就越快,不需要编译或者解释),选择编译而不是解释,问题越简单,运算时间就越少。那么我们该如何选择呢?规则制定者选择了问题的难易程度,可能是因为这是里面少数可以进行衡量的变量吧。规则制定者用O(n)这个符号来表示时间复杂度,其中n是一个代号,他可以是任何数字或者是n的多少次幂。其中如果程序中有双重循环,那么复杂度就是O(n^2),单循环就是O(n)(这里的n是正整数)。其中,时间复杂度最低的就是O(1)。

接着是数据排列的一种方式——插入排序。原理是选取一组数中最小或者最大的数,然后将该数和第一个数交换位置,这个位置就是已排列的。然后从未排列位置重复操作,直到最后一位排列完成。

for(int count1 = 0 ; count1 < N - 1 ; count1++)
{
int temp;
int count3;
temp = array[count1];
for(int count2 = count1 + 1 ; count2 < N - 1 ; count2++)
{
if(temp < array[count2])
{
temp = array[count2];
count3 = count2;
}
}
if(count1 != count3)
{
int tamp = array[count3];
array[count3] = array[count1];
array[count1] = tamp;
}
}

这是我按照原理自己敲出来的,肯定有改正的空间,希望各位大佬指点。

剩下的时间我就预习明天课程的内容了,晚安各位。


留言
avatar-img
留言分享你的想法!
avatar-img
YLAMBDA的沙龍
0會員
20內容數
这个专题是我个人的学习日记,每日会更新,内容很乱,请多见谅。
YLAMBDA的沙龍的其他內容
2023/11/10
2023/11/10
2023/11/04
2023/11/04
2023/11/01
2023/11/01
看更多
你可能也想看
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
給定一個輸入非負整樹陣列nums,請找出k值,使得陣列中恰好有k個元素大於等於 k。如果無解,回傳-1。尋找k值的方法包括排序法和二分搜尋法,時間複雜度都為O(n log n),空間複雜度為O(1)。關鍵知識點是當解空間具有遞增或遞減的性質時,可以用二分搜尋法加快搜尋效率。
Thumbnail
給定一個輸入非負整樹陣列nums,請找出k值,使得陣列中恰好有k個元素大於等於 k。如果無解,回傳-1。尋找k值的方法包括排序法和二分搜尋法,時間複雜度都為O(n log n),空間複雜度為O(1)。關鍵知識點是當解空間具有遞增或遞減的性質時,可以用二分搜尋法加快搜尋效率。
Thumbnail
題目會給定一個陣列nums和一個目標值goal。計算子陣列總和=goal的數目有多少。演算法包含前綴和和字典的技巧,時間複雜度為O(n),空間複雜度為O(n)。
Thumbnail
題目會給定一個陣列nums和一個目標值goal。計算子陣列總和=goal的數目有多少。演算法包含前綴和和字典的技巧,時間複雜度為O(n),空間複雜度為O(n)。
Thumbnail
題目敘述 題目的情境是設計並且實現一個包含所有正整數的數據流,以set集合的方式存在。 數據流 = {1, 2, 3, 4, ..., ∞} 要求我們去實現定義好的function介面: SmallestInfiniteSet()建構子,初始化這個包含所有正整數的數據流。 int po
Thumbnail
題目敘述 題目的情境是設計並且實現一個包含所有正整數的數據流,以set集合的方式存在。 數據流 = {1, 2, 3, 4, ..., ∞} 要求我們去實現定義好的function介面: SmallestInfiniteSet()建構子,初始化這個包含所有正整數的數據流。 int po
Thumbnail
複習一下: 我們學習了關於撰寫程式的相關觀念 條件分支(if/else) : 藉由條件分支讓程式執行相對應的功能。 迴圈(while loop ) :程式利用迴圈反覆執行某個區塊的程式碼。 字串處理 (string) : 每個程式都在處理資料,而字串是一種非常重要且常用的資料。 函式(fu
Thumbnail
複習一下: 我們學習了關於撰寫程式的相關觀念 條件分支(if/else) : 藉由條件分支讓程式執行相對應的功能。 迴圈(while loop ) :程式利用迴圈反覆執行某個區塊的程式碼。 字串處理 (string) : 每個程式都在處理資料,而字串是一種非常重要且常用的資料。 函式(fu
Thumbnail
題目會給定一個存有整數的陣列,要求我們依照下列規則進行排序,由小排到大,升序排列。
Thumbnail
題目會給定一個存有整數的陣列,要求我們依照下列規則進行排序,由小排到大,升序排列。
Thumbnail
cs50 第四週課程 Recover 解題思路
Thumbnail
cs50 第四週課程 Recover 解題思路
Thumbnail
👨‍💻簡介 陣列就像是一個儲存相同類型資料的容器,你可以想像成裝滿了一樣東西的盒子,每個東西都叫做陣列元素。這種類型可以是基本的,像是整數或字串,也可以是你自己定義的型別。不過陣列有個限制,就是大小一旦確定就無法改變。在Go語言裡,陣列的長度也是型別的一部分。
Thumbnail
👨‍💻簡介 陣列就像是一個儲存相同類型資料的容器,你可以想像成裝滿了一樣東西的盒子,每個東西都叫做陣列元素。這種類型可以是基本的,像是整數或字串,也可以是你自己定義的型別。不過陣列有個限制,就是大小一旦確定就無法改變。在Go語言裡,陣列的長度也是型別的一部分。
Thumbnail
Hi,大家好。我是茶桁。 最近几节课,我们都是在详细讲解Python内的数据类型,上一节课我们详细了解了字符串,这节课,让我们来详解一下列表。 首先,我们先有一个大的概念,列表,其实就是一组有序的数据组合;另外,列表中的数据是可以被修改的。也就是说,列表是一个可变序列类型。 列表定义 如何在
Thumbnail
Hi,大家好。我是茶桁。 最近几节课,我们都是在详细讲解Python内的数据类型,上一节课我们详细了解了字符串,这节课,让我们来详解一下列表。 首先,我们先有一个大的概念,列表,其实就是一组有序的数据组合;另外,列表中的数据是可以被修改的。也就是说,列表是一个可变序列类型。 列表定义 如何在
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News