c语言程序里的à是什么意思

Python019

c语言程序里的à是什么意思,第1张

①看懂不管什么代码都有一些非常有意思的技巧

②我假设我现在从来没看过冒泡排序,和你一起分析一下这代码

③int a[N]= //初始化了乱序数组

int i,j,temp//嗯?i,j,temp干嘛的?我暂时不知道,因为我还没往下看,我先记着有这几个变量

for (j=0j<=N-2j++)

for(i=0i<=N-j-1i++)//出现两个嵌套循环,第一个是j从0到N-2 第二个是i从从0到N-j-i,如果没看后面,我仍然不知道i,j具体要干嘛,接着看

if (a[i]>a[i+1])

//这句就很明显了,当a[i]和a[i+1]不是大于关系,就让他们交换顺序,也就用到了之前的temp变量

//换句话说,就是任意相邻的a[i]和a[i+1]只要不是从小到大的顺序,就让相邻的元素从小到大

//后面的代码我知道,是循环并输出所有数组内元素

//再回头分析,我人脑模拟一下,当j=0,i从0到N-1,

当j=1,i从0到N-2,

.....

当j=N-2,i从0到1,

结束循环

//我们再看一下,每次对比换序会有什么影响,由于相邻元素对比换序会导致扫描到的最右边那个元素为最大值

//所以,当j=0,我们得到了a[N-1]是最大值,j=1得到了a[N-2]是第二大值...依此类推

//等j扫描完了,我们就得到了a[N-1]到a[0]分别是最大值,第二大值,第三大值...最小值

④以上分析隐含了什么技巧?其实就是《算法导论》中的一个定理:循环不变式

循环不变式:当你证明循环中i=0,1是对的,以及n是对的,并且都符合同样的规则,那么这个循环整个就是对的。

同样,你能用循环不变式通过归纳出i=0,1步,n步时的效果,来推断整体效果。

(类似数学第一、第二归纳法)

一般分析复杂代码分两种:

循环逻辑复杂度分析:要用到循环不变式去判定

语义逻辑复杂度分析:要用到诸多编码技巧和经验,包括优先级等等。

*a在c语言中意思是:当a是一个指针的时候,*a就是这个指针指向的内存的值,在定义的时候加了*的都是指针变量,都是一个地址。扩展资料 在赋值的时候加了*的`都是表示这个指针指向内存的值,在等号前面就是给这个值赋值,后面就是取这个值。