有些代码一两个月都会忘了,有空多做下总结,记录下来,等需要用到的时候可以来翻翻总结的博客。写技术博客,对自己是一种总结,对别人,是一种参考。
1.sort()方法
1
2
3
4
5
6
7
8
9
10
11
12
|
var ar1=[2,4,6,8,1,3] var ar2=[2,16,36,8,56] ar1.sort() ar2.sort() //这个方法值只能排序第一位数 也可以字符串进行排序 console.log(ar1) //[1,2,3,4,6,8] console.log(ar2) //[16, 2, 36, 56, 8] ar2.sort( function (a,b){ return a-b //a-b为升序 //return b-a //b-a为降序 }) console.log(ar2) //[2, 8, 16, 36, 56] |
2.reverse()方法
1
2
3
|
var ar1=[2,4,6,8,1,3] ar1.reverse() //此方法为倒序,也就是反过来。并不会进行大小排序 console.log(ar1) //[3, 1, 8, 6, 4, 2] |
3.冒泡排序
1
2
3
4
5
6
7
8
9
10
11
12
13
|
//每轮依次比较相邻两个数的大小,后面比前面小则交换 var b=0 //设置用来调换位置的值 var a=[1,9,33,2,5,34,23,98,14] //冒泡排序 for ( var i=0;i<a.length;i++){ for ( var j=0;j<a.length;j++){ if (a[j]>a[j+1]){ b=a[j] a[j]=a[j+1] a[j+1]=b } } } console.log(a) //[1, 2, 5, 9, 14, 23, 33, 34, 98] |
4.选择排序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
//拿第一个数与后面数相比较,如果比后面的数大则交换 //拿第二个数与后面的数比较,如果比后面的数大则交换 //直到比较到倒数第二个数,最后一个数不用比较 var b=0 //设置用来调换位置的值 var a=[1,9,33,2,5,34,23,98,14] //冒泡排序 for ( var i=0;i<a.length;i++){ for ( var j=i;j<a.length;j++){ if (a[j]>a[j+1]){ b=a[j] a[j]=a[j+1] a[j+1]=b } } } console.log(a) //[1, 2, 5, 9, 14, 23, 33, 34, 98] |
5.快速排序
先从数列中取出一个数作为基准数
分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边
再对左右区间重复第二步,直到各区间只有一个数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
function quickSort(arr, i, j) { if (i < j) { let left = i; let right = j; let mid = Math.floor((left+right)/2); let temp = arr[left]; arr[left] = arr[mid]; arr[mid] = temp; let pivot = arr[left]; while (i < j) { while (arr[j] >= pivot && i < j) { // 从后往前找比基准小的数 j--; } if (i < j) { arr[i++] = arr[j]; } while (arr[i] <= pivot && i < j) { // 从前往后找比基准大的数 i++; } if (i < j) { arr[j--] = arr[i]; } } arr[i] = pivot; quickSort(arr, left, i-1); quickSort(arr, i+1, right); return arr; } } |