摘要:請(qǐng)?zhí)畛浯a,使能使傳入的參數(shù)按照從小到大的順序顯示出來(lái)。冒泡排序從小到大排序從大到小排序快速排序插入排序二分查找遞歸方法二分查找非遞歸方法
請(qǐng)?zhí)畛浯a,使mySort()能使傳入的參數(shù)按照從小到大的順序顯示出來(lái)。
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; } } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/88227.html
摘要:為檢查長(zhǎng)度為的列表,二分查找需要執(zhí)行次操作。最后需要指出的一點(diǎn)是高水平的讀者可研究一下二叉樹(shù)關(guān)于二叉樹(shù),戳這里數(shù)據(jù)結(jié)構(gòu)與算法二叉樹(shù)算法常見(jiàn)練習(xí)在一個(gè)二維數(shù)組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。 常見(jiàn)數(shù)據(jù)結(jié)構(gòu) 簡(jiǎn)單數(shù)據(jù)結(jié)構(gòu)(必須理解和掌握) 有序數(shù)據(jù)結(jié)構(gòu):棧、隊(duì)列、鏈表。有序數(shù)據(jù)結(jié)構(gòu)省空間(儲(chǔ)存空間?。?無(wú)序數(shù)據(jù)結(jié)構(gòu):集合、字典、散列表,無(wú)序...
摘要:為檢查長(zhǎng)度為的列表,二分查找需要執(zhí)行次操作。最后需要指出的一點(diǎn)是高水平的讀者可研究一下二叉樹(shù)關(guān)于二叉樹(shù),戳這里數(shù)據(jù)結(jié)構(gòu)與算法二叉樹(shù)算法常見(jiàn)練習(xí)在一個(gè)二維數(shù)組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。 常見(jiàn)數(shù)據(jù)結(jié)構(gòu) 簡(jiǎn)單數(shù)據(jù)結(jié)構(gòu)(必須理解和掌握) 有序數(shù)據(jù)結(jié)構(gòu):棧、隊(duì)列、鏈表。有序數(shù)據(jù)結(jié)構(gòu)省空間(儲(chǔ)存空間?。?無(wú)序數(shù)據(jù)結(jié)構(gòu):集合、字典、散列表,無(wú)序...
摘要:為檢查長(zhǎng)度為的列表,二分查找需要執(zhí)行次操作。最后需要指出的一點(diǎn)是高水平的讀者可研究一下二叉樹(shù)關(guān)于二叉樹(shù),戳這里數(shù)據(jù)結(jié)構(gòu)與算法二叉樹(shù)算法常見(jiàn)練習(xí)在一個(gè)二維數(shù)組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。 常見(jiàn)數(shù)據(jù)結(jié)構(gòu) 簡(jiǎn)單數(shù)據(jù)結(jié)構(gòu)(必須理解和掌握) 有序數(shù)據(jù)結(jié)構(gòu):棧、隊(duì)列、鏈表。有序數(shù)據(jù)結(jié)構(gòu)省空間(儲(chǔ)存空間?。?無(wú)序數(shù)據(jù)結(jié)構(gòu):集合、字典、散列表,無(wú)序...
摘要:通過(guò)兩個(gè)二分查找的條件繼續(xù)進(jìn)行問(wèn)題的分析,那么問(wèn)題又來(lái)了,二分查找是快速的查找一個(gè)數(shù)據(jù)是否存在一組數(shù)據(jù)中,而且效率極高,億查找一個(gè)數(shù)據(jù)只需次查找。二分查找的三點(diǎn)重點(diǎn)循環(huán)退出條件注意是而不是。 showImg(https://segmentfault.com/img/remote/1460000018761246);這篇文章主要深入數(shù)據(jù)結(jié)構(gòu)與算法在解決實(shí)際問(wèn)題怎么運(yùn)用和分析的,對(duì)于 IP...
摘要:所以,二分查找較適用于一次排序,多次查找的數(shù)據(jù)。面對(duì)大量的數(shù)據(jù),二分查找方能體現(xiàn)其優(yōu)勢(shì)。 1. 二分查找的思想 二分查找是一種使用十分普遍的查找算法,其基本的思路也非常的簡(jiǎn)單,在一個(gè)有序的數(shù)據(jù)集合中,我們想要查找某個(gè)數(shù)據(jù),直接取最中間的那個(gè)數(shù)據(jù),將它和要找的數(shù)據(jù)進(jìn)行比較,如果較大,則在更大的那個(gè)數(shù)值區(qū)間繼續(xù)取中間值查找,反之亦然。 例如我們要在一個(gè)有序的集合里[1,3,5,6,7,8,...
摘要:我們現(xiàn)在來(lái)看二分搜索算法的兩種變形插值搜索和指數(shù)搜索。插值搜索是對(duì)二分搜索算法的改進(jìn),插值搜索可以基于搜索的值選擇到達(dá)不同的位置。 預(yù)警 在本篇文章中,將為各位老鐵介紹不同的搜索算法以及它們的復(fù)雜度。因?yàn)榱η笸ㄋ滓锥?,所以篇幅可能較長(zhǎng),大伙可以先Mark下來(lái),每天抽時(shí)間看一點(diǎn)理解一點(diǎn)。本文配套的Github Repo,歡迎各位老鐵star,會(huì)一直更新的。 開(kāi)篇 和排序類(lèi)似,搜索或者叫做...
閱讀 4008·2021-11-16 11:44
閱讀 3182·2021-11-12 10:36
閱讀 3438·2021-10-08 10:04
閱讀 1332·2021-09-03 10:29
閱讀 464·2019-08-30 13:50
閱讀 2717·2019-08-29 17:14
閱讀 1802·2019-08-29 15:32
閱讀 1146·2019-08-29 11:27