JS快速排序和去重

2022-09-13 13:54:09 字數 1310 閱讀 4879

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;

}

但是這樣迴圈了二次,效率不好.下面提供的較好,宣告乙個物件,陣列的值作為物件的屬性並賦值為一,然後判斷這個物件屬性是否存在就行了

第二種
1

var 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 對 基準 左邊和右邊的兩個子集,不斷重複第一步和第二步,直到所有子集只剩下乙個元素為止...