天天看點

數組、冒泡排序與去重

數組冒泡排序:

  var arr = [3,2,4,1];//3次

  //[3,2,1,4];第一次循環的結果

    //var n = null;

    // 從小到大排序:

// 第一步:數字交換;

    if(arr[0]>arr[1]){//0,1

           n = arr[0];

           arr[0] = arr[1];

           arr[1] = n;

    }//[2,3,4,1]

// 第二步:冒泡——将最大的數字冒泡到最後;

    for (var i = 0; i < arr.length-1; i++) {

           if(arr[i]>arr[i+1]){

                  n = arr[i];

                  arr[i] = arr[i+1];

                  arr[1+i] = n;

           }

    }

// 第三步:循環,對比每一個數字,讓他們實作從小到大排列;

    for (var j = 0; j < arr.length-1; j++) {

           for (var i = 0; i < arr.length-1; i++) {

                  if(arr[i]>arr[i+1]){

                         n = arr[i];

                         arr[i] = arr[i+1];

                         arr[1+i] = n;

                  }

           }

// 第四步:優化(已經冒到最後的最大數不用對比);

           for (var i = 0; i < arr.length-1-j; i++) {

                  if(arr[i]>arr[i+1]){

console.log(arr);

數組去重:

  var arr1 = [2,4,1,2,3,4,5,3,4,5];

  var arr2 = [];

  var n ;

//去重第1步,向空數組添加第一個數值;

  n=-1;

  if (n==-1) {

         arr2.push(arr1[0]);

  }

//去重第2步,判斷原數組中的下一個值是否與新數組的值有相等情況,沒有則插入新數組;

  for (var j = 0; j < arr2.length; j++){

         if(arr1[1]==arr2[j]){

                n=j;//如果有相等的,就改變n的值,讓它不為-1;

                break;//此時跳出循環不用再往下對比了;

         }

         arr2.push(arr1[1]);

//去重第3步,使用循環,判斷原數組中的所有值是否與新數組的值有相等情況,沒有則插入新數組;

  for (var i = 0; i < arr1.length; i++) {

         n = -1;//arr1數組在取得一個值對比的時候,需要初始化n為-1,否則n會繼續上一次産生的值,有可能在符合條件的時候依然不是-1;

           for (var j = 0; j < arr2.length; j++) {

                  if(arr1[i]==arr2[j]){

                         n=j;

                         break;

             if (n==-1) {

                    arr2.push(arr1[i]);