關於迴圈的一些理解(自用)

2021-09-10 08:18:14 字數 2105 閱讀 1066

這個是for迴圈的一般的形式,

for(int a = 0 ; a < something; a++)

這個是while迴圈的一般形式

while( true)

這個是do-while迴圈的一般形式

dowhile()

但是到了實際的應用中,1在排序中,迴圈可以用來操控迴圈的次數,2也可以操控陣列的下標來達到遍歷陣列的作用,3在鍊錶中,迴圈還可以通過判斷鍊錶next域的狀態來操控鍊錶的遍歷,

從而可以說迴圈的核心在於如何控制迴圈停止,那就需要琢磨迴圈的邊界條件以及迴圈過程。

拿for迴圈來說,在氣泡排序中

氣泡排序的思想,

1:從第乙個元素開始,相鄰的兩個元素依次向後比較,把兩個元素中較大的乙個放在後邊,例如a[0]與a[1]比

,新a[1]再和a[2]比,以此類推,直到比到最後乙個,這樣,比完一次,陣列的最後乙個元素必定是最大的元素,

2:再在剩下的元素中在像1一樣去運作,可以找到次大的元素,以此類推,當找到倒數第二個的時候,整個陣列排序完成

第一次冒泡的過程,找到了一堆數種的最大的乙個放在了陣列的末尾

第二次冒泡的時候

以此類推,每冒泡一次,從剩下的元素中找乙個最大的元素放在未確定陣列的末尾,然後,直到比到a[1]確定了,那麼a[0]自然也就是最小的了,

所以氣泡排序如其名字一樣,是將相對較大的元素讓其通過相鄰元素的依次比較而冒出頭。

給出**

for(int i = 0 ; i < 陣列長度 - 1;i++){			//0-length-1 是length次,而

//想要迴圈length-1次

//所以就是從0到length-2,外層for是控制迴圈次數

//只能要想迴圈到length-2,上界就必須是length-1

//因為i在此處是對迴圈的標記

for(int j =0 ; j < 陣列長度 - 1 - i ; j++)

//這裡的陣列長度-1是因為到陣列末尾的陣列下標就是陣列長度-1

//還要-i是因為

//內層for是控制陣列下標來比較的

//因為每冒泡一次,則會冒出來乙個新的確定的最大的元素

//所以,就需要減去冒泡出來的新的元素的個數,

//第i此迴圈的時候就已經有i個元素冒泡好的,

//所以可以不用比較,可以減去,然後就不用比較已冒泡好的了

{ if(a[j]總結:在氣泡排序中,外層的for迴圈是為了控制冒泡的次數,而內層的for是為了控制陣列是如何執行每次的冒泡的,需要對應到具體的陣列下標上,這裡體現了對for迴圈的不同的運用

在用迴圈語句控制鍊錶的時候,這個時候的迴圈語句的控制語句的作用也會體現出來

例如『在雙向迴圈鍊錶的控制中,

為了判斷雙向迴圈鍊錶是否遍歷完成,

可以在方法體內用兩個工作指標

乙個指標(dp)指向雙向迴圈鍊錶的頭節點,另乙個指標(dn)可以指向雙向迴圈鍊錶的頭節點的下乙個節點,然後dn向後一直走,直到dn的next域指向的是dp,則雙向迴圈鍊錶遍歷完一遍,並且沒有破壞鍊錶的頭節點的指標資訊

雙指標遍歷的好處在於,在銷毀雙向迴圈鍊錶的時候也可以用dp去指向頭節點,然後dn指向將要銷毀的節點,dn在銷毀乙個脫鏈的節點之後,可以繼續指向dp的next從而繼續銷毀下去,直到dp的next指向的是dp,這時,雙向迴圈鍊錶除了頭節點都會釋放完,達到用迴圈控制鍊錶操作的目的。

以我現在的理解,你讓迴圈動起來相對容易,但你要是想讓迴圈在你想要的位置停下來,需要細細的琢磨。

更為細緻的理解為

1、迴圈可以控制迴圈次數(for),

2、迴圈還可以控制迴圈的精確的個體,如陣列的下標(for),比如鍊錶的遍歷(while)

3、do-while由於無法判斷第一次的迴圈是否滿足迴圈條件,故而可以在第一次迴圈之前加乙個判斷,所以,這個比較麻煩,在實際的操作中,do-while我還沒有怎麼去運用,應該是我還沒有認識到do-while的強大之處。

關於熵的一些理解

對於理工科學生來說,熵 並不是乙個陌生的名詞。在諸如 大學物理 熱力學 和 資訊理論 等課程中都會有所介紹。但同時 熵 又是乙個顯得有點神秘的概念,看不見也摸不著。我最早是在高中物理課中聽說的,大概是在介紹 熱力學第二定律 時提到的。熱力學第二定律的內容是 熱力學過程是不可逆的 孤立系統自發地朝著熱...

關於float的一些理解

float是否脫離文件流,乙個父元素不設定overflow的話,子元素float,就不會把父元素撐開,換句話說,他就不會有高度,但是做個demo 父元素overflow hidden 子元素前兩個float,第三個不float,結果是第三個沒有clear浮動的元素,跟float的元素出現在同乙個位置...

關於android layout的一些理解

1 wrap content view的尺寸根據它的內容確定 match parent view的尺寸盡量和它的parent view group一樣大 2 獲得view的位置 position getleft gettop getright getleft getwidth getwidth 3 ...