JavaScript_day07

day07內容

學習目標
1.循環語句do-while語句
2.循環語句while語句
3.循環語句for-in 語句,遍歷對象
4.循環關鍵字
5.冒泡排序
6.選擇排序
7.插入排序

1.do-while語句
do{
}while(condition);
後測試循環語句,即只有在循環體中的代碼執行之後,纔會測試出口條件。循環體內的代碼最少被執行一次。

2.while語句
while(condition){
}
前測試循環語句,即在循環體內的代碼被執行之前,就會對出口條件求值。因此,循環體內的代碼有可能永遠不會被執行。
while(false){
//
}
3.for-in 語句
是一種精準的迭代語句,可以用來枚舉對象的屬性
for(property in expression){
statement
}
例如:
打印出window對象中所有的屬性
for(var propName in window){
console.log(propName);
}
label 語句
使用label可以在代碼中添加標籤,以便將來使用
label : for(int i=0;i<10;i++){
if(i == 5){
break label;
}
}
4.循環關鍵字
break 跳出循環體
continue 結束本次循環,進行下一次循環
5.冒泡排序 Bubble Sort
計算機科學領域的較簡單的排序算法
原理如下:
比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
針對所有的元素重複以上的步驟,除了最後一個。
持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
代碼實現:
var arr = [223, 4, 5, 734, 2, 33, 23, 99];
for (var i = 0; i < arr.length-1; i++) { //控制比較幾輪
for (var j = 0; j < arr.length - 1 - i; j++) { //控制每輪內的比較
if (arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
第一輪 [ 4, 22, 223, 2, 77, 23, 99, 734 ]
第二輪 [ 4, 22, 2, 77, 23, 99, 223, 734 ]
第三輪 [ 4, 2, 22, 23, 77, 99, 223, 734 ]
第四輪 [ 2, 4, 22, 23, 77, 99, 223, 734 ]
第五輪 [ 2, 4, 22, 23, 77, 99, 223, 734 ]
第六輪 [ 2, 4, 22, 23, 77, 99, 223, 734 ]
第七輪 [ 2, 4, 22, 23, 77, 99, 223, 734 ]

6.選擇排序 Selection sort
簡單直觀的排序算法
算法原理:
第一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,然後再從剩餘的未排序元素中尋找到最小(大)元素,然後放到已排序的序列的末尾。以此類推,直到全部待排序的數據元素的個數爲零。選擇排序是不穩定的排序方法
選擇排序算法思想:在冒泡排序上做了優化,減少了交換次數,在首輪選擇最大的數放在第一項,一輪之後第一項是有序的了,第二輪從第二項開始選擇最大的數放在第二項,以此類推,直到整個數組完全有序。
代碼實現:
var arr = [223, 4, 22, 734, 2, 77, 23, 99];
for (var i = 0; i < arr.length - 1; i++) {
//假設0位是最小的
var minIndex = i;
//從之後的元素中找最小的
for (var j = i + 1; j < arr.length; j++) {
if(arr[j] < arr[minIndex]){
minIndex = j;
}
}
var temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
console.log(arr,‘第幾輪’);
}
console.log(arr);
第一輪[ 2, 4, 22, 734, 223, 77, 23, 99 ]
第二輪[ 2, 4, 22, 734, 223, 77, 23, 99 ]
第三輪[ 2, 4, 22, 734, 223, 77, 23, 99 ]
第四輪[ 2, 4, 22, 23, 223, 77, 734, 99 ]
第五輪[ 2, 4, 22, 23, 77, 223, 734, 99 ]
第六輪[ 2, 4, 22, 23, 77, 99, 734, 223 ]
第七輪[ 2, 4, 22, 23, 77, 99, 223, 734 ]
7.插入排序 Insertion sort
簡單直觀且穩定的排序算法
算法原理:
插入算法把要排序的數組分成兩部分:第一部分包含了這個數組的所有元素,但將最後一個元素除外(讓數組多一個空間纔有插入的位置),而第二部分就只包含這一個元素(即待插入元素)。在第一部分排序完成後,再將這個最後元素插入到已排好序的第一部分中。
插入排序的基本思想是:每步將一個待排序的記錄,按其關鍵碼值的大小插入前面已經排序的文件中適當位置上,直到全部插入完爲止。
代碼實現:
var arr = [223, 4, 22, 734, 2, 77, 23, 99];
for (var i = 1; i < arr.length; i++) {
for (var j = i - 1; j >= 0; j–) {
if(arr[j] > arr[j + 1]){
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
第一輪[ 4, 223, 22, 734, 2, 77, 23, 99 ]
第二輪[ 4, 22, 223, 734, 2, 77, 23, 99 ]
第三輪[ 4, 22, 223, 734, 2, 77, 23, 99 ]
第四輪[ 2, 4, 22, 223, 734, 77, 23, 99 ]
第五輪[ 2, 4, 22, 77, 223, 734, 23, 99 ]
第六輪[ 2, 4, 22, 23, 77, 223, 734, 99 ]
第七輪[ 2, 4, 22, 23, 77, 99, 223, 734 ]

note

學習目標
1.循環語句do-while語句
2.循環語句while語句
3.循環語句for-in 語句,遍歷對象
4.循環關鍵字
5.階乘累加 1!+2!+3!+4!+5!+…
6.遞歸

1.do-while語句
do{

}while(condition);
後測試循環語句,即只有在循環體中的代碼執行之後,纔會測試出口條件。循環體內的代碼最少被執行一次。

2.while語句
初始條件
while(condition){
//循環體
//迭代條件
}
前測試循環語句,即在循環體內的代碼被執行之前,就會對出口條件求值。因此,循環體內的代碼有可能永遠不會被執行。
while(false){
//
}
3.for-in 語句
是一種精準的迭代語句,可以用來枚舉對象的屬性
for(property in expression){
statement
}
例如:
打印出window對象中所有的屬性
for(var propName in window){
console.log(propName);
}
label 語句
使用label可以在代碼中添加標籤,以便將來使用
label : for(int i=0;i<10;i++){
if(i == 5){
break label;
}
}
4.循環關鍵字
break 跳出循環體
continue 結束本次循環,進行下一次循環

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章