首页 > 代码库 > 数组排序
数组排序
<script type="text/javascript">
//1、选择排序
/*var arr=[11,4,7,20,5,800,3,6,9];
var temp;
for(var i=0;i<arr.length;i++){
var minIndex=i;//假设i的值为最小值的索引;
for(var j=i+1;j<arr.length;j++){
if(arr[j]<arr[minIndex]){//最小值的索引;
minIndex=j;//
}
}
if(i!=minIndex){//判断最小的索引是否等价于假设的索引。
temp=arr[i];
arr[i]=arr[minIndex];
arr[minIndex]=temp;
}
}*/
/*alert(arr);
alert(arr.sort(function (a,b){
return a-b;
}));*/
//选择排序(2)
/*function selectSort(arr){
var temp;
for(var i=0;i<arr.length;i++){
var minIndex=i;//假设i的值为最小值的索引;
for(var j=i+1;j<arr.length;j++){
if(arr[j]<arr[minIndex]){//最小值的索引;
minIndex=j;//
}
}
if(i!=minIndex){//判断最小的索引是否等价于假设的索引。
temp=arr[i];
arr[i]=arr[minIndex];
arr[minIndex]=temp;
}
}
return arr;
}
var arr=[11,4,7,20,5,800,3,6,9];
alert(selectSort(arr));*/
//插入排序
/*var arr=[11,4,7,20,5,800,3,6,9];
var temp;
for(var i=0;i<arr.length;i++){
var minIndex=i;//假设i的值为最小值的索引;
var min=arr[minIndex];//最小值
for(var j=i+1;j<arr.length;j++){
if(arr[j]<min){//最小值的索引;
temp=arr[j];
arr[j]=min;
min=temp;
}
}
console.log(min);//3,4,5,6,7,9,11,20,800
arr[i]=min;//i=0-8
}
alert(arr);*/
//快速排序: 数组的方法(splice/push/concat)+递归+Math数学方法。
//Math.floor();向下取整,Math.floor(1.99)==1
//Math.ceil();向上取整,Math.ceil(1.009)==2
/*function quicksort(array){
if(array.length<=1){//如果数组的长度为1,返回当前的数组。
return array;
}
var left=[];//存放小于中间值的元素;
var right=[];//存放大于中间值的元素;
var midIndex=Math.floor(array.length/2);//取中间的索引
//var minValue=http://www.mamicode.com/array[midIndex];
var minValue=http://www.mamicode.com/array.splice(midIndex,1);//取中间的索引对应的值。
//var minValue=http://www.mamicode.com/array.slice(midIndex,midIndex+1);
for(var i=0;i<array.length;i++){
if(array[i]<minValue){
left.push(array[i]);
}else if(array[i]>=minValue){//=相同的元素放置right数组里面。
right.push(array[i]);
}
}
return quicksort(left).concat(minValue,quicksort(right));
}
var arr=[11,4,4,4,4,4,7,20,9,9,9,9,5,800,3,6,4,9];
alert(quicksort(arr));*/
//数组去重(方法1)
/*var arr=[11,4,4,4,4,4,7,20,9,9,9,9,5,800,3,6,4,9];
var newarr=[];
newarr.push(arr[0]);//newarr=[11,4];
for(var i=1;i<arr.length;i++){
var bstop=false;//不重复
for(var j=0;j<newarr.length;j++){
if(arr[i]==newarr[j]){
bstop=true;//重复
break;//跳出循环
}
}
if(!bstop){
newarr.push(arr[i]);
}
}
alert(newarr);*/
//数组去重(2)
/*function norepeat(array){
var newarr=[];
newarr.push(array[0]);//newarr=[11,4];
for(var i=1;i<array.length;i++){
var bstop=false;//不重复
for(var j=0;j<newarr.length;j++){
if(array[i]==newarr[j]){
bstop=true;//重复
break;//跳出循环
}
}
if(!bstop){
newarr.push(array[i]);
}
}
return newarr;
}*/
//var arr=[11,4,4,4,4,4,7,‘a‘,9,9,9,9,5,800,3,6,4,9];
//alert(arr.indexOf(4,7));//7代表数组的索引,开始查找的起始位置
//indexOf() 第一个参数:数组的元素,返回元素对应第一个找到的索引, 第二个参数:从那个位置开始查找。
//alert(arr.indexOf(‘b‘));//-1 没有找到返回-1.
/* var arr=[11,4,4,4,4,4,7,‘a‘,9,9,9,9,5,800,3,6,4,9];
var newarr=[];
newarr.push(arr[0]);
for(var i=1;i<arr.length;i++){
if(newarr.indexOf(arr[i])==-1){
newarr.push(arr[i]);
}
}
alert(newarr);
*/
</script>
数组排序