做爰高潮a片〈毛片〉,尤物av天堂一区二区在线观看,一本久久A久久精品VR综合,添女人荫蒂全部过程av

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

JS實現常見的查找、排序、去重算法示例

來源:懂視網 責編:小采 時間:2020-11-27 22:14:10
文檔

JS實現常見的查找、排序、去重算法示例

JS實現常見的查找、排序、去重算法示例:本文實例講述了JS實現常見的查找、排序、去重算法。分享給大家供大家參考,具體如下: 今天總結了下排序簡單的算法 【自定義排序】 先尋找一個最小的數,然后依次那這個數和數組中其他數字比較,如果發現比這個數字小的數就把這兩個數調換位置,然后再繼續尋
推薦度:
導讀JS實現常見的查找、排序、去重算法示例:本文實例講述了JS實現常見的查找、排序、去重算法。分享給大家供大家參考,具體如下: 今天總結了下排序簡單的算法 【自定義排序】 先尋找一個最小的數,然后依次那這個數和數組中其他數字比較,如果發現比這個數字小的數就把這兩個數調換位置,然后再繼續尋

本文實例講述了JS實現常見的查找、排序、去重算法。分享給大家供大家參考,具體如下:

今天總結了下排序簡單的算法

【自定義排序】

先尋找一個最小的數,然后依次那這個數和數組中其他數字比較,如果發現比這個數字小的數就把這兩個數調換位置,然后再繼續尋找下一個最小的數字進行下一輪比較

var arr = [31, 6, 19, 8, 2, 3];
function findMin(start, arr) {
 var iMin = arr[start];
 var iMinIndex = start;
 for (var i = start + 1; i < arr.length; i++) {
 if (arr[i] < iMin) {
 iMin = arr[i];
 iMinIndex = i;
 }
 }
 return iMinIndex;
}
function sort1(arr) {
 for (var i = 0; i < arr.length; i++) {
 var iMinIndex = findMin(i, arr);
 var car;
 car = arr[i];
 arr[i] = arr[iMinIndex];
 arr[iMinIndex] = car;
 }
 return arr;
}
document.write(sort1(arr));

【線性查找】:一個一個去查找

//不重復 有序
var arr = [0];
for (var i = 1; i < 100000; i++) {
 arr[i] = arr[i - 1] + Math.floor(Math.random() * 4 + 1);
}
function find1(n, arr) {
 for (var i = 0; i < arr.length; i++) {
 if (arr[i] == n) {
 return true;
 }
 }
 return false;
}
//測試性能
var t1 = new Date().getTime();
for (var i = 0; i < 10000; i++) {
 var n = Math.random() * 10000;
 find2(n, 0, arr.length - 1)
}
alert(new Date().getTime() - t1);

【二分查找】:不停的分成兩個部分,分部分查找

是一種萬能方法,不一定是最好的,但是個保底的方法。(分治法)

***中間值 相加除以二,統一偏左,向下取整

//不重復 有序
var arr = [12, 17, 23, 34, 45, 76, ];
function find2(n, s, e) {
 //邊界處理
 if (s > e) {
 return false;
 } else if (s == e) {
 if (arr[s] == n) {
 return true;
 } else {
 return false;
 }
 }
 var c = Math.floor((s + e) / 2);
 if (arr[c] == n) {
 return true;
 } else {
 if (n < arr[c]) {
 return find2(n, s, c);
 } else {
 return find2(n, c + 1, e);
 }
 }
}
alert(find2(34, 0, arr.length - 1)); //true false

【邊界處理】-----遞歸,一層一層往下找

//要求數組不重復有順序\
var arr = [12, 23, 34, 45, 56, 67, 78]
function find2(n, s, e) {
 if (s > e) {
 return fasle;
 } else if (s == e) {
 if (arr[s] == e) {
 return true;
 } else {
 return false;
 }
 }
 var c = Math.floor((s + e) / 2);
 if (arr[c] == n) {
 return true;
 } else {
 if (n < arr[c]) {
 return find2(n, s, c);
 } else {
 return find2(n, c + 1, e);
 }
 }
}
alert(find2(12, arr.length + 1, 78));

應用

【查找最小值】

var arr = [12, , 32, 9, 5, 3, 1, 101, -100, -1000];
function findMin(s, e) {
 if (s > e) {
 return [];
 } else if (s == e) {
 return arr[s];
 } else if (s == e - 1) {
 if (arr[s] < arr[e]) {
 return arr[s];
 } else {
 return arr[e];
 }
 }
 var c = Math.floor((s + e) / 2);
 var l = findMin(s, c);
 var r = findMin(c + 1, e);
 if (l < r) {
 return l;
 } else {
 return r;
 }
}
alert(findMin(0, arr.length - 1));

【數組去重】

var arr = [1, 2, 3, 4, 5, 4, 3, 4, 5, 2, 1, 4, 2, 1, 5, 7];
function findInArr(n, arr) {
 for (var i = 0; i < arr.length; i++) {
 if (arr[i] == n) {
 return true;
 }
 }
 return false;
}
function removeCopy(s, e) {
 if (s > e) {
 return [];
 } else if (s == e) {
 return [arr[s]];
 } else if (s == e - 1) {
 if (arr[s] == arr[e]) {
 return [arr[s]];
 } else {
 return [arr[s], arr[e]]
 }
 }
 var c = Math.floor((s + e) / 2);
 var l = removeCopy(s, c);
 var r = removeCopy(c + 1, e);
 for (var i = 0; i < r.length; i++) {
 if (!findInArr(r[i], l)) {
 l.push(r[i]);
 }
 }
 return l;
}
document.write(removeCopy(0, arr.length - 1));

【數組排序】

var arr = [34, 32, 1, 76, 55, -100, 99, 101];
function mySort(s, e) {
 //邊界處理
 if (s > e) {
 return [];
 } else if (s == e) {
 return [arr[s]]
 } else if (s == e - 1) {
 if (arr[s] < arr[e]) {
 return [arr[s], arr[e]];
 } else {
 return [arr[e], arr[s]];
 }
 }
 //1.切中間值
 var c = Math.floor((s + e) / 2);
 //2.分半處理
 var l = mySort(s, c);
 var r = mySort(c + 1, e);
 var res = [];
 while (l.length > 0 || r.length > 0) {
 if (l[0] < r[0]) {
 res.push(l.shift());
 } else {
 res.push(r.shift());
 }
 }
 if (l.length == 0) {
 res = res.concat(r);
 } else if (r.length == 0) {
 res = res.concat(l);
 }
 return res;
}
//調用
document.write(mySort(0, arr.length - 1));

冒泡排序 BubbleSort

循環,每次拿出兩個值,兩兩比較,如果下一個值比目前的小,那么交換位置

外層循環是循環取數,內層循環是兩兩交換比較

var arr = [ - 122, -2, 5, 6, 73, 34, 5, 2];
function BubbleSort(arr) {
 for (var i = 0; i < arr.length; i++) {
 for (var j = 0; j < arr.length - 1; j++) {
 if (arr[j] > arr[j + 1]) {
 var tmp = arr[j];
 arr[j] = arr[j + 1];
 arr[j + 1] = tmp
 }
 }
 }
 return arr;
}
document.write(BubbleSort(arr));

【快速排序】 -------quickSort

取數組中間的數,比中間數小的房中間數左邊,比中間數大的放右邊,再把兩遍鏈接起來

function quickSort(arr, s, e) {
 //邊界處理 參與流程
 if (arr.length == 0) {
 return [];
 }
 var c = Math.floor((s + e) / 2);
 var arrC = arr.splice(c, 1);
 var l = [];
 var r = [];
 for (var i = 0; i < arr.length; i++) {
 if (arr[i] < arrC) {
 l.push(arr[i]);
 } else {
 r.push(arr[i]);
 }
 }
 return quickSort(l).concat(arrC, quickSort(r));
}
var arr = [5, 5, 12, 56, 1, 67, -1, -23 - 1];
document.write(quickSort(arr, 0, arr.length - 1));

【散列】 hash 哈希 數組 ------js常用用的結構

添加

var arr = [];
arr.length = 0;
var cont = 0;
function hash_add(n) {
 var pos = n % arr.length;
 //當空間不足的時候
 if (arr[pos]) {
 while (arr[pos]) {
 cont++;
 if (arr[pos] == n) {
 return;
 } else {
 pos++;
 if (pos == arr.length) {
 pos = 0;
 }
 }
 }
 arr[pos] = n;
 } else {
 arr[pos] = n;
 }
 //空間不足的時候的擴建
 if (cont == arr.length) {
 //d等唄擴建
 var oldArr = arr;
 arr.length = oldArr.length * 2;
 arr = [];
 for (var i = 0; i < oldArr.length; i++) {
 arr.push(oldArr[i]);
 count = 0;
 }
 }
}
hash_add();

PS:這里再為大家推薦一款關于排序的演示工具供大家參考:

在線動畫演示插入/選擇/冒泡/歸并/希爾/快速排序算法過程工具:
http://tools.jb51.net/aideddesign/paixu_ys

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript數算用法總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript數組操作技巧總結》、《JavaScript排序算法總結》、《JavaScript遍歷算法與技巧總結》、《JavaScript查找算法技巧總結》及《JavaScript錯誤與調試技巧總結》

希望本文所述對大家JavaScript程序設計有所幫助。

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

JS實現常見的查找、排序、去重算法示例

JS實現常見的查找、排序、去重算法示例:本文實例講述了JS實現常見的查找、排序、去重算法。分享給大家供大家參考,具體如下: 今天總結了下排序簡單的算法 【自定義排序】 先尋找一個最小的數,然后依次那這個數和數組中其他數字比較,如果發現比這個數字小的數就把這兩個數調換位置,然后再繼續尋
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top 主站蜘蛛池模板: 科尔| 彭水| 延庆县| 四子王旗| 莎车县| 文成县| 阿拉尔市| 扬州市| 龙泉市| 武胜县| 铅山县| 水城县| 额敏县| 彰武县| 靖安县| 五常市| 宜兴市| 汾西县| 临海市| 仙游县| 长丰县| 健康| 南皮县| 辽阳县| 雷山县| 南江县| 桃江县| 万年县| 克什克腾旗| 吴桥县| 锦屏县| 梅州市| 永城市| 桐乡市| 普定县| 阳东县| 汽车| 荔波县| 南京市| 广元市| 桐城市|