關於氣泡排序以及遞迴的理解

2021-10-14 11:29:21 字數 1894 閱讀 8570

就是將陣列的資料迴圈並排序,重新組成新的陣列,就是氣泡排序

例如:

//這裡我們先定義乙個隨機數組

var arr =

[10000

,5888

,12000

,6999

,7000

,3000

,4500

,1200

,6000

]//首先迴圈陣列,來遍歷每一項的值

for(

var i=

0; i}console.

log(arr)

;//最後會得到

//(9) [12000, 10000, 7000, 6999, 6000, 5888, 4500, 3000, 1200]

使用雙迴圈來進行排序,外部迴圈控制所有的回合,

內部迴圈代表每一輪的冒泡處理,進行變數的比較與交換。

下面我們就來寫乙個例子來練習氣泡排序:

例題:下面陣列每次會從最大的值依次消除到最小,請問需要迴圈幾遍來全部消除

var arr =

[10000

,5888

,12000

,6999

,7000

,3000

,4500

,1200

,6000

]//按照題目可以得出第一次是 10000,5888,3000,1200

// 第二次是12000,6999,4500

// 第三次是7000,6000,就需要3次迴圈

for(

var i=

0; i// console.log(num);

}//最後得出的就是最前面的最大值

console.

log(arr.length)

;

function

fn(data)

} n--

}return data}fn

(arr)

遞迴就是函式的自我呼叫,就是在函式中呼叫自己。

首先要有判斷結束的條件,還有沒有滿足條件的呼叫

例如:最簡單的1到100值的相加

let i=0;

function

fn(num)

//如果不等於1,就讓值加函式呼叫100-1,以此類推。

return num+

fn(num-1)

}console.

log(fn(

100));

//將100作為實參傳進去

//列印出來就是1到100相加的結果

遞迴函式特點:

每次呼叫都會有一次返回

遞迴函式中必須有終止語句。

每一級函式呼叫時都有自己的變數

遞迴會消耗大量記憶體,在實際開發中很少使用

小例子:

const arr =[,

,,],

},],

},,,

];將上面的json資料遞迴平鋪到陣列裡面

let list=

;function

fn(arr)

list.

push

(item)

list.

foreach

(item=>)}

);}fn

(arr)

console.

log(list)

;//列印結果 [, , , , , , ]

// 0:

// 1:

// 2:

// 3:

// 4:

// 5:

// 6:

// length: 7

關於氣泡排序的for迴圈理解

氣泡排序 本次排序時從小到大,把數值大的數往後排 a 13,2,341,1,54,5,2,5,6 一共9個數 defbubble sort a for i in range len a 1 長度 1代表後面8個最大的數已經排好了,最後乙個數就不用排了 count 0for j in range le...

關於氣泡排序的for迴圈理解

氣泡排序 本次排序時從小到大,把數值大的數往後排 a 13,2,341,1,54,5,2,5,6 一共9個數 defbubble sort a for i in range len a 1 長度 1代表後面8個最大的數已經排好了,最後乙個數就不用排了 count 0for j in range le...

氣泡排序以及氣泡排序的優化

很早接觸過氣泡排序法,但一直沒有真正的理解,只是為了記住而學習,今天又重新看了一下,其實氣泡排序法第一次排序會把最大的冒到最上面,第二次會把次大的泡冒到最大的後面,一次類推 另外在排序的次數上會逐漸減少。看 void bubble sort int a,int n 其實還可以優化一下,當發現沒有進行...