网站首页 > 技术文章 正文
本文实例总结了JS数组排序技巧。分享给大家供大家参考,具体如下:
1、冒泡排序
var array = [8, 6, 9, 2, 1]; var temp = 0; for (var i = 0; i < array.length; i++) { for (var j = 0; j < array.length - i; j++) { if (array[j] > array[j + 1]) { temp = array[j + 1]; array[j + 1] = array[j]; array[j] = temp; } } } console.log(array);
结果如下:
2、sort排序
var arrSimple=new Array(1,8,7,6,2,5); arrSimple.sort(); // document.writeln(arrSimple.join()); console.log(arrSimple.join())
效果如下:
3、 快速排序
function quickSort(arr){ if(arr.length<=1){//如果数组只有一个数,就直接返回; return arr; } var num=Math.floor(arr.length/2);//找到中间数的索引值,如果是浮点数,则向下取整 var newValue=arr.splice(num,1);//找到中间数的值 var left=[],right=[]; for(var i=0;i<arr.length;i++){ if(arr[i]<newValue){ left.push(arr[i]);//基准点的左边的数传到左边数组 }else{ right.push(arr[i]);//基准点的右边的数传到右边数组 } } return quickSort(left).concat(newValue,quickSort(right));//递归不断重复比较 } console.log(quickSort([31,4,5,52,1,8]));
效果如图:
4、希尔排序
function shellSort(nums){//希尔排序 var gaps=[5,3,1];//定义间隔区间 for(var g=0;g<gaps.length;g++){//一个一个间隔值开始 for(var i=gaps[g];i<nums.length;i++){//以间隔值遍历 var temp=nums[i];//选中元素 for(var j=i;j>=gaps[g]&&nums[j-gaps[g]]>temp;j-=gaps[g]){//如果前面一个大于后面一个 nums[j]=nums[j-gaps[g]];//后移 } nums[j]=temp;//填补 } } } function show(nums){//显示数组 for(var i=0;i<nums.length;i++){ document.write(nums[i]+' '); } document.write('<br>'); } var nums=[6,0,2,9,3,5,8,0,5,4]; show(nums);//6 0 2 9 3 5 8 0 5 4 shellSort(nums);//希尔排序 show(nums);//0 0 2 3 4 5 5 6 8 9
效果如图:
5、插入排序
function sort(elements){ //假设第0个元素是一个有序的数列,第1个以后的是无序的序列, //所以从第1个元素开始将无序数列的元素插入到有序数列中 for(var i = 1; i < elements.length; i++){ //升序 if(elements[i] < elements[i-1]){ //取出无序数列中的第i个作为被插入元素 var guard = elements[i]; //记住有序数列的最后一个位置,并且将有序数列位置扩大一个 var j = i - 1; elements[i] = elements[j]; //比大小,找到被插入元素所在的位置 while(j >= 0 && guard < elements[j]){ elements[j+1] = elements[j]; j--; } //插入 elements[j+1] = guard; } } } var elements = [10, 9, 8, 7, 6, 5]; console.log('before: ' + elements); sort(elements); console.log(' after: ' + elements);
效果如图:
6、选择排序:
function order(arry){ var ary=arry function sorrt() { length = ary.length; for (var i = 0; i < length; i++) { _min = ary[i] k = i for (var j = i + 1; j < length; j++) { if (_min > ary[j]) { _min = ary[j] k = j } } ary[k] = ary[i] ary[i] = _min } return ary; } return {sor:sorrt}; } var k=order([14,12,6,5,18,0,1,3,2]) console.log(k.sor())
效果如下:
附:js中数组(Array)的排序(sort)注意事项
var arrDemo = new Array(); arrDemo[0] = 10; arrDemo[1] = 50; arrDemo[2] = 51; arrDemo[3] = 100; arrDemo.sort(); //调用sort方法后,数组本身会被改变,即影响原数组 alert(arrDemo);//10,100,50,51 默认情况下sort方法是按ascii字母顺序排序的,而非我们认为是按数字大小排序 arrDemo.sort(function(a,b){return a>b?1:-1});//从小到大排序 alert(arrDemo);//10,50,51,100 arrDemo.sort(function(a,b){return a<b?1:-1});//从大到小排序 alert(arrDemo);//100,51,50,10
原文作者:祈澈姑娘,90后前端妹子,爱编程,爱运营,文艺与代码齐飞,魅力与智慧共存的程序媛一枚。
猜你喜欢
- 2025-06-13 8个步骤,创建项目管理时间表(建立项目管理系统)
- 2025-06-13 配电柜里最全电气原件 安装 排序 电气元件名称 让你一目了然 电工必备
- 2025-06-13 html基础必备-列表标记,前端小白一看就会
- 2025-06-13 家族坟墓的多种排列形式,墓葬布局的排列布局(图解)
- 2024-10-03 17种编程语言实现排序算法-插入排序
- 2024-10-03 前端工程师算法系列(4)-归并排序 归并排序js代码
- 2024-10-03 插入排序java java排序实现
- 2024-10-03 插入排序算法 插入排序算法c语言
- 2024-10-03 十大排序算法(javascript) 十大排序算法c语言
- 2024-10-03 常考算法题:无重复字符串的排列组合
你 发表评论:
欢迎- 519℃Oracle分析函数之Lag和Lead()使用
- 518℃几个Oracle空值处理函数 oracle处理null值的函数
- 514℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 504℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 501℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 491℃【数据统计分析】详解Oracle分组函数之CUBE
- 470℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 470℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端富文本编辑器 (47)
- 前端路由 (61)
- 前端数组 (73)
- 前端排序 (47)
- 前端定时器 (47)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)