1. 冒泡let arr = [1, 4, 5, 2, 3, 8, 11, 21, 6, 3, 12]; for (let i = 0; i < arr.length; i++) {for (let j = 0; j < arr.length - 1 - i; j++) {if (arr[j] > arr[j + 1]) {[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]}} } 2. 选择排序 选择排序算法是一种原址比较排序算法。选择排序大致的思路是找到数据结构中的最小值并将其放置在第一位,接着找到第二小的值并将其放在第二位。let arr = [1, 4, 5, 2, 3, 8, 11, 21, 6...
原文:十大经典排序算法(动图演示) 插入排序插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 算法描述: 一般来说,插入排序都采用 in-place 在数组上实现:从第一个元素开始,该元素可以认为已经被排序; 取出下一个元素,在已经排序的元素序列中从后向前扫描; 如果该元素(已排序)大于新元素,将该元素...
我正在尝试理解我的帖子末尾的代码示例,我需要帮助.所以这应该是一个“乐透”.所以这就是我所看到的:for( i = 1 ; i < 50 ; i++ ){ nums[ i ] = i ; }这里它将i的值(将在1和49之间)分配给nums数组的每个第i个元素.所以我想这只是制作一个包含数字1到49的数组.实际上,考虑到后面的代码,我没有看到整行的重点.for( i = 1 ; i < 50 ; i++ ){rand = Math.ceil( Math.random() * 49 ) ;temp = nums[ i ] ;nums[ i ] = nums[ rand ] ;nu...
本文内容包括:(双向)冒泡排序、选择排序、插入排序、快速排序(填坑和交换)、归并排序、桶排序、基数排序、计数排序(优化)、堆排序、希尔排序。大家可以在这里测试代码。更多 leetcode 的 JavaScript 解法也可以在我的算法仓库中找到,欢迎查看~另外附上十大排序的 C++版本,因为写惯了 JavaScript,所以这个 C++版本写得有些丑,请不要介意呀。如果你觉得有帮助的话,就点个 star 鼓励鼓励我吧先推荐一个数据结构和算法动态可视化...
排序总结(五种排序算法的JS实现) 冒泡法排序思想: 冒泡法比较任何相邻两项,如果第一个第二个大,则交换他们,直至最大的元素沉至最右边,进行排序; 选择法排序思想: 是一种原址比较算法,找到数组中的最小值,并将放置到数组的第一位,接着找到数组的第二位并放置在第二位,以此类推对数组进行排序; 插入法排序思想: 插入法排序每次排一个数组项,嘉定数组第一项已经排序了,接着和数组第二项比较,第二项比第一项大,待在原...
1.冒泡排序function bubble_sort(arr) {if (arr.length <= 1) {return arr;}var len = arr.length;for (var i = 0; i < len; i++) {for (var j = 0; j < len - 1; j++) {if (arr[j] > arr[j + 1]) {var temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}return arr; } var arr = [3, 5, 8, 1, 2, 4, 7, 9]; var sort = bubble_sort(arr); console.log(sort);2.快速排序function quick_sort(arr) {if (arr.length <= 1)retu...
选择排序 function sort(arr) {for (let i = 0, length = arr.length; i < length; i++) {for (let j = i + 1; j < length; j++) {if (arr[i] < arr[j]) {var temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}}return arr; }
// 快速排序class QuickSort {/*** @param {*[]} originalArray* @return {*[]}*/Sort(originalArray) {// 复制 originalArray 数组防止它被修改const array = [...originalArray];// 如果 originalArray 数组元素个数 <=1,就不需要排序了,直接返回if (array.length <= 1) {return array;}// 初始化左数组和右数组const leftArray = [];const rightArray = [];// 取出 originalArray 数组中的第一个元素作为中间比较值const pivo...
1、冒泡排序function sort(arr){for(let i = 0;i<arr.length;i++){for(let j = 0;j<arr.length - 1 - i;j++){if(arr[j] > arr[j + 1]){[arr[j],arr[j + 1]] = [arr[j + 1],arr[j]]}}}return arr; } 这种排序方式有两种极端的情况,一种是正序,就会一直在做无用功,还有一种就是逆序。
原文:十大经典排序算法(动图演示) 希尔排序1959年Shell发明,第一个突破O(n2)的排序算法,是简单插入排序的改进版。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。 算法描述:将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,具体算法描述:选择一个增量序列t1,t2,…,tk,其中t1>t2>...,tk=1; 按增量序列个数k,对序列进行k 趟排序; 每趟排序,根据对应的增量...