JavaScript------排序
Posted wsjyztx123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript------排序相关的知识,希望对你有一定的参考价值。
快速排序
1、在数组中找到基准点,其他数与之比较
2、建立两个空数组,小于基准点的数存储在左边数组,大于基准点的数存储在右边数组
3、拼接数组,即将左边数组、基准点、右边数组拼接起来,拼接的同时左边数组与右边数组继续执行1、2两个步骤,直到最后完成数组的最终排序
特点:快速,常用。
缺点:需要声明两个数组,浪费了内存空间
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>快速排序</title> </head> <body> <script> var ary = [21,8,4,32,5]; function quickSort(ary) { //如果数组长度小于等于1,无需判断直接返回即可 if(ary.length <= 1){ return ary; } //取基准点 var num = Math.floor(ary.length/2); //取基准点的值,splic(index,1)函数可以返回数组中被删除的那个数arr[index+1] var numValue = ary.splice(num,1); var left = [];//存放比几点小的数组 var right = [];//存放比基点大的数组 //遍历数组,进行判断分配 for(var i = 0;i < ary.length;i++){ var cur = ary[i]; if(cur < numValue){ left.push(cur);//比基点小的数组放在左边数组 }else{ right.push(cur);//比基点大的数组放在右边数组 } } //递归执行以上操作,对左右;两个数进行操作,直到数组长度小于等于1 return quickSort(left).concat(numValue,quickSort(right)); } document.write(quickSort(ary)); </script> </body> </html>
冒泡排序
冒泡排序思想:每一次对比相邻两个数据的大小,小的拍在前面,如果前面的数据比后面的大就交换这两个数的位置
要实现上述规则需要用到两层for循环,外层从第一个数到倒数第二个数,内层从外层的后面一个数到最后一个数
特点:简单、实用、易于理解
缺点:比较次数多,效率低
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>冒泡排序</title> </head> <body> <script> var ary = [21,32,2,9,4]; function bubblesort(ary) { for(var i = 0;i < ary.length-1;i++){ for(var j = i+1; j < ary.length;j++){ if(ary[i] > ary[j]){ var tmp = ary[i]; ary[i] = ary[j]; ary[j] = tmp; } } } return ary; } document.write(bubblesort(ary)); </script> </body> </html>
插入排序
插入排序的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表
排序过程大致如下:
1、从第一个元素开始,该元素可以认为已经被排序;
2、取出下一个元素,在已经排序的元素序列中从后向前扫描;
3、如果该元素(已排序)大于新元素,将该元素移到下一位置;
4、重复步骤3,直到找到已排序的元素小于或等于新元素的位置;
5、将新元素插入到该位置后;
6、重复步骤2~5。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>插入排序</title> </head> <body> <script> var arr = [21,8,4,32,5]; function insertSort(arr){ var len = arr.length; for (var i = 1; i < len; i++) { var key = arr[i]; var j = i - 1; while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j]; j--; } arr[j + 1] = key; } return arr; } document.write(insertSort(arr)); </script> </body> </html>
选择排序
原理:首先从原始数组中找到最小的元素,并把该元素放在数组的最前面,然后再从剩下的元素中寻找最小的元素,放在之前最小元素的后面,直到排序完毕。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>选择排序</title> </head> <body> <script> var arr = [21,5,6,34,2]; function selsetSort(arr) { var len = arr.length; var index; for (var i = 0; i < len - 1; i++) { index = i; for (var j = i + 1; j < len; j++) { if (arr[index] > arr[j]) {//寻找最小值 index = j;//保存最小值的索引 } } if (index != i) { var temp = arr[i]; arr[i] = arr[index]; arr[index] = temp; } } return arr; } document.write(selsetSort(arr)); </script> </body> </html>
以上是关于JavaScript------排序的主要内容,如果未能解决你的问题,请参考以下文章