数组排序的几种方法

来源:互联网 发布:mac groovy sdk 编辑:程序博客网 时间:2024/05/17 11:06

1、sort()

sort()主要是对数组中的字符串进行排序,通过比较ASCII的大小,对于数字的比较使用格式

数组名.sort(function(num1,num2){return num1-num2;})
这是升序,如果降序将num1 -num2改成num2 -num1;


2、选择排序法

原理就是用前一个数和后面每一个的比较,如果大于就交换位置(假设是从小到大排序),依次比较,

// 选择排序法 用前一个数和后一个比较,如果是升序,大的值放后面,如果是降序,小的放后面/*var arr= [21,34,2,45,4,60,3];for (var i=0; i<arr.length; i++){for (var j=i+1; j<arr.length; j++){if(arr[i]>arr[j]){var temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}}console.log(arr);*/


3、冒泡排序

原理就是相邻的元素之间进行比较

依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到最大数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最大数。如此下去,直至最终完成排序。
// 冒泡排序方法,挨个去比较var arr = [12,4,34,5,23,33];function maoPao(arr){//比较的轮数for (var i=1; i<arr.length; i++){// 每一轮比较的次数for (var j=1, k=0; j<=arr.length-i; j++, k++){// 进行比较if(arr[k]>arr[k+1]){var temp = arr[k];arr[k] = arr[k+1];arr[k+1] = temp;}}}}maoPao(arr);console.log(arr);