所謂數組, 就是將多個元素 (一般是同一類型),按必定順序排列放到一個集合中 , 那麼這個多個元素的集合咱們就稱之爲數組算法
思考 :數組
// 爲何要有數組?
//1. 咱們知道,,一個變量可以存儲一個值, 當咱們想要存儲多個值的時候, 就可使用數組。好比存儲一個班級裏面全部學生的名字;
//2. 使用數組能夠對多個相同類型的值統一的管理,,存儲起來方便,,操做的時候,也會很方便;
複製代碼
特色 : 有順序,有長度;函數
用途 : 存儲大量的數據學習
總結 :ui
數組 : 多個元素的集合,,這個集合有順序,有長度。用途是存儲大量的數據.spa
在js裏,數組是一個有序的列表,,能夠在數組中存聽任意的數據code
初體驗 :排序
var arr = ['why','lisa','love'];
// 總結 :
//1. 變量 : numbder->num1 string-str1, boolean->b1 flag array->arr1
//2. [] , 用[] 來表明數組 => () 小圓 [] 中方 {} 大花
//3. 數組裏的每個值,稱之爲元素
//4. 類型能夠不同,,可是最好同樣
//5. 逗號
//4. 數組是有長度的 length
//5. 下標決定了數組的順序
// 下標的用法?
// 6. 獲取元素 數組[下標]
var arr = ['why','lisa','love'];
console.log(arr);
console.log(arr[0]);
console.log(arr[1]);
console.log(arr[2]);
複製代碼
經過 構造函數 建立數組ci
var arr = new Array();//建立了一個空數組
var arr = new Array(1,2,3,4);//建立了一個數組,裏面存放了4個數字
var arr = new Array(4);//建立了一個數組,長度爲4,裏面全是空值
複製代碼
經過 數組字面量 建立數組字符串
var arr1 = []; //建立一個空數組
var arr2 = [1, 2 , 3, 4]; //建立一個包含4個數值的數組,多個數組項以逗號隔開
var arr3 = [4]; // 建立一個數組,元素只有1個,,,元素是4
複製代碼
數組的長度 : 跟字符串同樣,,,數組有一個length 屬性,, 指數組中存放的元素的個數 ;
var str1 = 'abc';
console.log(str1.length);
var arr = [1,3,5,8];
console.log(arr.length);
複製代碼
數組的下標 : 由於數組有序的,有序的就應該有本身的序號,,而這個序號就是每一個元素對應的下標, 下標從0 開始 , 到 arr.length-1 結束
var arr = ['why','lisa','love'];
arr[0];//下標0對應的值是why
arr[2];//下標2對應的值是love
var arr = ['why','lisa','love'];
// 0 1 2
// 下標 : 0 開始 arr.length-1 結束 長度:3 arr.length
複製代碼
數組的取值
//格式:數組名[下標]
//功能: 獲取數組下標對應的那個值,若是下標不存在,則返回undefined。
// 下標範圍 : 0 ~ arr.length-1
var arr = ["red", "green", "blue"];
//
打印 : arr[0];//red
打印 : arr[2];//blue
打印 : arr[3];//這個數組的最大下標爲2,所以返回undefined
複製代碼
數組的賦值
//格式:數組名[下標] = 值;
//若是下標有對應的值,會把原來的值覆蓋,
var arr = ["red", "green", "blue"];
arr[0] = "yellow";//把red替換成了yellow
// 若是下標不存在,會給數組新增一個元素。
arr[3] = "pink";//給數組新增長了一個pink的值
// 若是下標有跨度,,中間全是empty 不合法
// 特殊 : arr[arr.length] = 值
arr[arr.length] = '哈';
arr[arr.length] = '你妹';
複製代碼
思考 : 如何給一個數組添加新的元素???? [重要]
遍歷 : 對數組的每個元素都訪問一次就叫遍歷
數組遍歷的基本語法:
// 傳統遍歷
arr[0];
arr[1]
// for遍歷 1-100 的演變
// 下標 : 0 arr.length-1
//
for(var i =0; i < arr.length; i++) {
//數組遍歷的固定結構
}
複製代碼
聲明:咱們今天主要是學習數組遍歷的語法,對於這種數學燒腦類的題目,想不到是很正常的 ,
//1. 介紹什麼冒泡排序?
思考1 : i < arr.length 是遍歷幾回 i < arr.length-1 是遍歷幾回
思考2 : 交換兩個變量
思考3 :數組中的最大值放到最後 var arr = [5, 4, 3, 2, 1];
//2. 冒泡排序算法的運做以下:
//比較相鄰的元素。若是第一個比第二個大,就交換他們兩個。
//對每一對相鄰元素做一樣的工做,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
//針對全部的元素重複以上的步驟,除了最後一個。
//持續每次對愈來愈少的元素重複上面的步驟,直到沒有任何一對數字須要比較。 [1]
複製代碼
5 4 3 2 1
1,2,3,5,4
var isJiaoHuan = '沒有交換';
//思路:判斷,若是一趟下來,一次交換都沒有作,說明就已經排好序,就不須要繼續比
//var arr = [65, 97, 76, 13, 27, 49, 58];
var arr = [1, 2, 3, 4, 5, 6, 7];
var tang = 0;
var ci = 0;
for (var i = 0; i < arr.length - 1; i++) {
tang++;
var count = 0;//記錄交換的次數
//思路: 兩兩比較,若是前面的大於後面的,交換位置
for (var j = 0; j < arr.length - 1 - i; j++) {
ci++;
if (arr[j] > arr[j + 1]) {
count++;
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
console.log(count);
if (count == 0) {
//說明,沒有進行交換
break;
}
}
console.log(arr);
console.log(tang, ci);
複製代碼