1樓:匿名使用者
①看懂不管什麼**都有一些非常有意思的技巧
②我假設我現在從來沒看過氣泡排序,和你一起分析一下這**
③int a[n]=; //初始化了亂序陣列
int i,j,temp; //嗯?i,j,temp幹嘛的?我暫時不知道,因為我還沒往下看,我先記著有這幾個變數
for (j=0;j<=n-2;j++)
for(i=0;i<=n-j-1;i++)//出現兩個巢狀迴圈,第一個是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步時的效果,來推斷整體效果。
(類似數學第
一、第二歸納法)
一般分析複雜**分兩種:
迴圈邏輯複雜度分析:要用到迴圈不變式去判定
語義邏輯複雜度分析:要用到諸多編碼技巧和經驗,包括優先順序等等。
另外,虛機團上產品**,超級便宜
2樓:匿名使用者
這個程式有問題,據推測大概是輸出一個十六進位數,但源程式少一個函式
3樓:匿名使用者
這難道是嵌入式程式設計的**
4樓:駭客之劍
明顯是51微控制器裡面的c語言操作 , delay是延時函式,微控制器延時的,主函式裡的p1=0xfe是微控制器的埠配置 , 0xfe是十六進位制 11111110 ,1就是高電平,0就是低電平
5樓:小船哥說敏捷
這個應該是51微控制器程式設計吧
p1=_crol_(p1,1);
這句是將p1左移一位,低位補零,所以上面的for迴圈是將p1左移8位變為0x00。
我覺得p1可能是控制8個led燈的顯示的吧,這個程式應該是控制led燈每經過一個delay(200);的時間點亮一盞燈或熄滅一盞燈,具體是點亮還是熄滅要看你的硬體的設計了。
6樓:
流水燈啊,第一次點亮p0.0口得燈,其他燈熄滅,第二次p0.1依次類推,迴圈往復
C語言,下面程式中語句的意思,C語言中flag是什麼意思?下面程式中flag是什麼意思?
風若遠去何人留 在每次賦值及取值時不使用cache中的值,而是都去實體記憶體中獲取 volatile 該值在程式中為常量 const 所以該值的改變,將由外部程式或硬體完成.其他幾個類似.只不過段不同,初始化值不同.語句含義是類似的.c語言中flag是什麼意思?下面程式中flag是什麼意思? 自我程...
C語言中的f n 是什麼意思?還有下面的題目為什麼選D,詳解
答案d是對的。n 就是n的階乘,也就是n n 1 n 2 2 1。如果n 5,n 5 4 3 2 1或者5 4 3 2,都一樣嘛。題目中,f的作用是儲存每次乘積的值。首先排除a,a中f 0,每次相乘都是0.比如5 吧,第一次應該是f f 5,f初值是0,那麼等號左邊的f被賦值後還是0,最後結果永遠是...
C語言中d是什麼意思,C語言裡面的 ld d U都是什麼意思啊?
月兒 c 語言中 是一種表達方式,程式設計,自然也就有輸入輸出,那麼每一座城樓總也會需要進行一個安檢,所以 主要辨別個種資料型別的一種表達方式。方法 步驟 f,f,e,e,g,g 用來輸入實數,可以用小數形式或指數形式輸入。int c 1.2 int c 400 int c 55.434343 c ...