摘要:請填充代碼,使能使傳入的參數按照從小到大的順序顯示出來。冒泡排序從小到大排序從大到小排序快速排序插入排序二分查找遞歸方法二分查找非遞歸方法
請填充代碼,使mySort()能使傳入的參數按照從小到大的順序顯示出來。
function mySort() { var tags = new Array(); for (var i = 0; i < arguments.length; i++) { tags.push(arguments[i]); } tags.sort(function sortNum(a, b) { return a - b; }); return tags; } var result = mySort(50, 11, 16, 32, 24, 99, 57, 100); console.info(result);
冒泡排序
function bubbleSort(arr) { for (var i = 0; i < arr.length; i++) { for (var j = 0; j < arr.length - i; j++) { var temp = 0; // ">" 從小到大排序 // "<" 從大到小排序 if (arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } return arr; }
快速排序
function quickSort(elements) { if (elements.length <= 1) { return elements; } var pivotIndex = Math.floor(elements.length / 2); var pivot = elements.splice(pivotIndex, 1)[0]; var left = []; var right = []; for (var i = 0; i < elements.length; i++) { if (elements[i] < pivot) { left.push(elements[i]); } else { right.push(elements[i]); } } return quickSort(left).concat([pivot], quickSort(right)); }
插入排序
insertSort = function (elements) { var i = 1, j, step, key, len = elements.length; for (; i < len; i++) { step = j = i; key = elements[j]; while (--j > -1) { if (elements[j] > key) { elements[j + 1] = elements[j]; } else { break; } } elements[j + 1] = key; } return elements; };
二分查找-遞歸方法
function binarySearch(arr, key, leftIndex, rightIndex) { if (leftIndex > rightIndex) { return -1; } var mid = parseInt((leftIndex + rightIndex) / 2); if (arr[mid] == key) { return mid; } else if (arr[mid] > key) { rightIndex = mid - 1; return binarySearch(arr, key, leftIndex, rightIndex); } else if (arr[mid] < key) { leftIndex = mid + 1; return binarySearch(arr, key, leftIndex, rightIndex); } }
二分查找-非遞歸方法
function binarySearch(arr, key) { var leftIndex = 0, rightIndex = arr.length - 1; while (leftIndex <= rightIndex) { var mid = parseInt((leftIndex + rightIndex) / 2); if (arr[mid] == key) { return mid; } else if (arr[mid] < key) { leftIndex = mid + 1; } else if (arr[mid] > key) { rightIndex = mid - 1; } else { return -1; } } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/88227.html
摘要:為檢查長度為的列表,二分查找需要執行次操作。最后需要指出的一點是高水平的讀者可研究一下二叉樹關于二叉樹,戳這里數據結構與算法二叉樹算法常見練習在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。 常見數據結構 簡單數據結構(必須理解和掌握) 有序數據結構:棧、隊列、鏈表。有序數據結構省空間(儲存空間小) 無序數據結構:集合、字典、散列表,無序...
摘要:為檢查長度為的列表,二分查找需要執行次操作。最后需要指出的一點是高水平的讀者可研究一下二叉樹關于二叉樹,戳這里數據結構與算法二叉樹算法常見練習在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。 常見數據結構 簡單數據結構(必須理解和掌握) 有序數據結構:棧、隊列、鏈表。有序數據結構省空間(儲存空間小) 無序數據結構:集合、字典、散列表,無序...
摘要:為檢查長度為的列表,二分查找需要執行次操作。最后需要指出的一點是高水平的讀者可研究一下二叉樹關于二叉樹,戳這里數據結構與算法二叉樹算法常見練習在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。 常見數據結構 簡單數據結構(必須理解和掌握) 有序數據結構:棧、隊列、鏈表。有序數據結構省空間(儲存空間小) 無序數據結構:集合、字典、散列表,無序...
摘要:通過兩個二分查找的條件繼續進行問題的分析,那么問題又來了,二分查找是快速的查找一個數據是否存在一組數據中,而且效率極高,億查找一個數據只需次查找。二分查找的三點重點循環退出條件注意是而不是。 showImg(https://segmentfault.com/img/remote/1460000018761246);這篇文章主要深入數據結構與算法在解決實際問題怎么運用和分析的,對于 IP...
摘要:所以,二分查找較適用于一次排序,多次查找的數據。面對大量的數據,二分查找方能體現其優勢。 1. 二分查找的思想 二分查找是一種使用十分普遍的查找算法,其基本的思路也非常的簡單,在一個有序的數據集合中,我們想要查找某個數據,直接取最中間的那個數據,將它和要找的數據進行比較,如果較大,則在更大的那個數值區間繼續取中間值查找,反之亦然。 例如我們要在一個有序的集合里[1,3,5,6,7,8,...
摘要:我們現在來看二分搜索算法的兩種變形插值搜索和指數搜索。插值搜索是對二分搜索算法的改進,插值搜索可以基于搜索的值選擇到達不同的位置。 預警 在本篇文章中,將為各位老鐵介紹不同的搜索算法以及它們的復雜度。因為力求通俗易懂,所以篇幅可能較長,大伙可以先Mark下來,每天抽時間看一點理解一點。本文配套的Github Repo,歡迎各位老鐵star,會一直更新的。 開篇 和排序類似,搜索或者叫做...
閱讀 3916·2021-11-16 11:44
閱讀 3116·2021-11-12 10:36
閱讀 3373·2021-10-08 10:04
閱讀 1257·2021-09-03 10:29
閱讀 391·2019-08-30 13:50
閱讀 2605·2019-08-29 17:14
閱讀 1735·2019-08-29 15:32
閱讀 1081·2019-08-29 11:27