重學前端之(3)數組、排序

數組

  • 所謂數組, 就是將多個元素 (一般是同一類型),按必定順序排列放到一個集合中 , 那麼這個多個元素的集合咱們就稱之爲數組算法

  • 思考 :數組

    // 爲何要有數組?
    //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]);
複製代碼

建立數組

  1. 經過 構造函數 建立數組ci

    var arr = new Array();//建立了一個空數組
    var arr = new Array(1,2,3,4);//建立了一個數組,裏面存放了4個數字
    var arr = new Array(4);//建立了一個數組,長度爲4,裏面全是空值
    複製代碼

  2. 經過 數組字面量 建立數組字符串

    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[arr.length] = 值
    • arr.push(值)

數組的遍歷

遍歷 : 對數組的每個元素都訪問一次就叫遍歷

數組遍歷的基本語法:

// 傳統遍歷
arr[0];
arr[1]

// for遍歷 1-100 的演變

// 下標 : 0 arr.length-1
// 
for(var i =0; i < arr.length; i++) {
	//數組遍歷的固定結構
}
複製代碼

冒泡排序

  1. 初級版本
  2. 中級版本

聲明:咱們今天主要是學習數組遍歷的語法,對於這種數學燒腦類的題目,想不到是很正常的 ,

//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);
複製代碼
相關文章
相關標籤/搜索