国产探花免费观看_亚洲丰满少妇自慰呻吟_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));            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 中牟县| 沂南县| 襄垣县| 盐津县| 赣州市| 海丰县| 庆安县| 永川市| 乌海市| 缙云县| 米泉市| 平阳县| 开江县| 措勤县| 罗江县| 长兴县| 乐都县| 东阿县| 呼伦贝尔市| 怀仁县| 巴中市| 云林县| 樟树市| 大厂| 教育| 江油市| 叙永县| 慈利县| 三亚市| 霍城县| 大化| 耿马| 长宁县| 明水县| 轮台县| 四会市| 香格里拉县| 漳平市| 湘乡市| 巴里| 克山县|