web web web
分类: Web开发
2014-11-05 14:46:40
var quickSort = function(arr) {
if (arr.length <= 1) { return arr; } //检查数组的元素个数,如果小于等于1,就返回。
var pivotIndex = Math.floor(arr.length / 2) ; //选择"基准"(pivot),并将其与原数组分离,再定义两个空数组,用来存放一左一右的两个子集。
var pivot = arr.splice(pivotIndex, 1)[0];
var left = [];
var right = [];
for (var i = 0; i < arr.length; i++){ //开始遍历数组,小于"基准"的元素放入左边的子集,大于基准的元素放入右边的子集。
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat([pivot], quickSort(right)); //使用递归不断重复这个过程,就可以得到排序后的数。
};
使用的时候,直接调用quickSort()就行了。
3.数组去重
是将一个数组中重复的数据去除掉。一个简单的思路是:
1.使用sort()让数组自动排序成从小到大的顺序,当然排序完重复的数据会出现在挨着的位置;
2.new一个新的数组,将原来的数组中的数据一个一个往新数组里放,放的过程中要比较,如果新数组中已经存在的数据就不要再重复的放了,最后得到的新的数组就是去重后的数组了。
function sort_arry(){
var arr=[1,2,3,1,3,1,4,2];
arr.sort();
var array1=new Array();
array1[0]=arr[0];
for(i=1;i
if(arr[i]!=array1[array1.length-1])
array1.push(arr[i]);
}
alert(array1);
}
sort_arry();
另一种思路是:
首先也是sort()排序,然后new一个新的数组,比较排序后的数组中相邻的两个数不一样的话就插入到新数组中,一样的话也是这个操作并少执行一次循环,最后得到的新最后得到的新的数组就是去重后的数组了。这里用到array.push(value)方法,也非常简单,实现如下:
function sort_arry(){
var arr=[1,2,3,3,1,4,2];
arr.sort();
var array1=new Array();
for(i=0;i
if(arr[i]==arr[i+1])
{
array1.push(arr[i]);
i++;
}else{
array1.push(arr[i]);
}
}
alert(array1);
}
sort_arry();