深入理解JS實現快速排序和去重javascript技巧
JS的快速排序和JS去重在面試的時候問的挺多的.下面是我對快速排序的理解,和快速排序,去重的代碼.
1.什麼是快速排序?
第一步: 快速排序就是去箇中間值,把比中間值小的放在左邊設爲arrLeft,比中間值大的放在右邊設爲arrRight
第二步: 對arrLeft進行第一步,對arrRight進行第一步.(明顯是一個遞歸嘛,當數組的長度小於2的時候結束)
第三步: 合併arrLeft,中間值,arrRight
quickSort = function(arr){if(th < ){return arr;}var tmp = ce(r(th/), )[],arrLeft = [],arrRight = [];for(var i = ; i < th; i++){if(arr[i] >= tmp){(arr[i]);}else{(arr[i]);}}return ee(arrLeft)at(tmp,ee(arrRight));}
的去重?
大家第一個想到的應該是,循環一次數組,每取到一個值就與後面的比較,如果沒有相同的就放入一個新數組裏面,這樣就去重了
第一種
var unique = function(arr){var newArr = [];while(th){var value = t();for(var i = , len = th; i<len; i++){if(value==arr[i]){break;}}if(i==len){(value);}}return newArr;}
但是這樣循環了二次,效率不好.下面提供的較好,聲明一個對象,數組的'值作爲對象的屬性並賦值爲一,然後判斷這個對象屬性是否存在就行了
第二種
var unique = function(arr){var arr = [];var obj = {};for(var i = , len = th; i < len; i++){if(!obj[a[i]]){obj[a[i]] = ;(a[i]);}}(obj)return arr;};
還有一種就是排序並去重 ,這種就更加容易了.判斷前面一個值是不是等於後面一個值如果相等,往後移動一位就行了
第三種
var unique = function(arr){var newArr = [];for(var i = , len = th; i<len; i++){if(arr[i] !==arr[i+]){(arr[i]);}if(i==len){(arr[i]);}}return newArr;}
以上所述是小編給大家介紹的JS實現快速排序和去重,希望對大家有所幫助,如果大家有任何疑問請給我們留言,小編會及時回覆大家的。在此也非常感謝大家對的支持!
相關文章
-
JavaScript快速排序實現實例教程
目前最常見的排序算法大概有七八種,理解和掌握各種排序算法似乎是一個合格的程序員所必須要掌握的。今天想要和大家分享快速排序算法的Javascript的實現。快速排序(Quicksort),又稱爲 劃分交換排序(partition-exchange -
淺談javascript深入理解js閉包
一、什麼是閉包?“官方”的解釋是:所謂“閉包”,指的是一個擁有許多變量和綁定了這些變量的環境的表達式(通常是一個函數),因而這些變量也是該表達式的一部分。相信很少有人能直接看懂這句話,因爲他描述的太學術。我想用 -
javascript中js閉包的深入理解
閉包(closure)是Javascript語言的一個難點,也是它的特色,很多高級應用都要依靠閉包實現。本文是本站小編搜索整理的關於javascript中js閉包的深入理解,給大家做個參考,希望對大家有所幫助!想了解更多相關信息請持續關注我 -
深入理解Javascript中的this關鍵字
文章主要介紹了深入理解Javascript中的this關鍵字,本文講解了方法調用模式、函數調用模式、構造器調用模式、apply調用模式中this的不同之處,需要的朋友可以參考下,就跟隨本站小編一起去了解下吧,想了解更多相關信息請 -
深入理解Javascript的繼承和原型鏈
在上一篇文章中,介紹了原型的概念,瞭解到在javascript中構造函數、原型對象、實例三個好基友之間的關係:每一個構造函數都有一個“守護神”——原型對象,原型對象心裏面也存着一個構造函數的“位置”,兩情相悅,而實例呢卻又 -
javascript作用域和閉包的深入理解
作用域作用域是一個變量和函數的作用範圍,javascript中函數內聲明的所有變量在函數體內始終是可見的,在javascript中有全局作用域和局部作用域,但是沒有塊級作用域,局部變量的優先級高於全局變量,通過幾個示例來了解下java -
使用JavaScript實現Java的List功能
複製代碼 代碼如下:/*** js模擬java中的List*/var list = new Array();/*** 添加* @param {Object} object*/function add(object) {list[th] = object;}/*** 移除此列表中指定位置上的元素。* @param index 指定位置 -
java與javascript之間json格式數據互轉詳解
老師們、同學們:早上好!今天我們全體師生齊聚在這裏,迎來了新學年的新學期。俗話說,新學期,新氣象,在此,我真誠地希望全體師生在新學期有新風貌!新收穫!新的學期開啓新的希望,新的憧憬承載新的夢想。爲了讓我們的夢想能成爲現實 -
深入理解javaScript中事件驅動
javascript中的事件驅動是通過 鼠標或熱鍵 的動作引發的 主要事件如下:1、鼠標單擊事件 onclick通常用於如下控件:button 按鈕對象checkbox 複選框或檢查列表 --配合onclick單擊事件,通常用於全選效果radio 單選按紐rese -
關於JavaScript中繼承的深入理解
JavaScript中我們可以藉助原型實現繼承。例如function baz(){="";}function foo(){}otype=new baz();var myFoo=new foo();;這樣我們就可以訪問到baz裏的屬性oo啦。在實際使用中這個樣不行滴,由於原型的共享特點(數據保