js的快速排序和js去重在面試的時候問的挺多的.下面是我對快速排序的理解,和快速排序,去重的**.
1.什麼是快速排序?
第一步: 快速排序就是去個中間值,把比中間值小的放在左邊設為arrleft,比中間值大的放在右邊設為arrright
第二步: 對arrleft進行第一步,對arrright進行第一步.(明顯是乙個遞迴嘛,當陣列的長度小於2的時候結束)
第三步: 合併arrleft,中間值,arrright
1 quicksort = function(arr)
5var tmp = arr.splice(math.floor(arr.length/2), 1)[0],
6 arrleft =,
7 arrright =;89
for(var i = 0; i < arr.length; i++)else15}
16return
arguments.callee(arrleft).concat(tmp,
arguments.callee(arrright));
1819 }
2.js的去重?
大家第乙個想到的應該是,迴圈一次陣列,每取到乙個值就與後面的比較,如果沒有相同的就放入乙個新陣列裡面,這樣就去重了
第一種
var unique1 = function(arr)
}if(i ==len)
}return
newarr;
}
但是這樣迴圈了二次,效率不好.下面提供的較好,宣告乙個物件,陣列的值作為物件的屬性並賦值為一,然後判斷這個物件屬性是否存在就行了
第二種
1var unique2 = function
(arr);
4for(var i = 0, len = a.length; i < len; i++)9}
10console.log(obj)
11return arr;
12 };
還有一種就是排序並去重 ,這種就更加容易了.判斷前面乙個值是不是等於後面乙個值如果相等,往後移動一位就行了
第三種1var unique3 = function
(arr)
7if(i ==len)10}
11return
newarr;
12 }
js 排序,去重
前幾天 有乙個需求要做乙個 勾選的按鈕 用的前端框架時 extjs 需求是這樣的 選擇資料後點選勾選 會把資料 放到乙個全域性變數裡,然後點選另外乙個提交按鈕 彈出乙個視窗 載入這些已經勾選的資料,進行預覽勾選的資料和提交。隱藏的需求之一就是預覽的時候不能看到重複的資料,或者說勾選的時候需要去重。實...
去重排序 JS 陣列去重
陣列去重算是面試題裡常見的考點了,之前在 medium 上看到一篇文章用三種方法實現陣列去重的,感覺十分簡潔。主要用到的是 set,array.filter,array.reduce。可能第一種大家都知道,方方也講過基數排序來去重,但是能用 filter,reduce 寫成這樣的真的很簡潔呀。let...
陣列快速排序 去重演算法
快速排序 快速排序 的思想很簡單,整個排序過程只需要三步 1 在資料集之中,選擇乙個元素作為 基準 pivot 2 所有小於 基準 的元素,都移到 基準 的左邊 所有大於 基準 的元 素,都移到 基準 的右邊。3 對 基準 左邊和右邊的兩個子集,不斷重複第一步和第二步,直到所有子集只剩下乙個元素為止...