国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

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

2024-05-06 15:33:58
字體:
來源:轉載
供稿:網友

本文實例講述了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, 89];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, 54, 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));            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 板桥市| 香港| 海城市| 合水县| 万全县| 宁德市| 江北区| 静海县| 红原县| 弋阳县| 镇坪县| 柳江县| 苏尼特右旗| 美姑县| 石景山区| 秦皇岛市| 乌鲁木齐县| 天水市| 彭水| 手游| 陕西省| 邵阳市| 吉林省| 曲松县| 方城县| 汾阳市| 灵宝市| 四子王旗| 双辽市| 绍兴县| 上思县| 武隆县| 驻马店市| 广宁县| 建阳市| 达尔| 新宁县| 菏泽市| 库伦旗| 河南省| 湟中县|