数组排序

数组排序

递归:递归函数是在一个函数通过名字调用自身情况下构成的

<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;
}
}*/

/*function jiecheng(n){//n=5
if(n==1){//基点
return 1;
}else{
return n*jiecheng(n-1);
}

 

}*/

/*alert(arr);
alert(arr.sort(function (a,b){
return a-b;
}));*/

//alert(jiecheng(100));//9.33262154439441e+157 10的157次方。

//选择排序(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));*/

//2.利用递归求斐波那契数列的前20项
// 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,

//插入排序
/*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);*/

/*function fb(n){//n:位置
if(n==1 || n==2){//基点
return 1;
}else{
return fb(n-1)+fb(n-2)
}
}

//快速排序: 数组的方法(splice/push/concat)+递归+Math数学方法。
美高梅59599,//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=array[midIndex];
var minValue=array.splice(midIndex,1);//取中间的索引对应的值。
//var minValue=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]);
}
}

//alert(fb(8));
for(var i=1;i<=20;i++){
document.write(fb(i)+’,’);
}*/

return quicksort(left).concat(minValue,quicksort(right));

//1.冒泡排序
//冒泡排序算法的原理如下:
//比较相邻的元素。如果第一个比第二个大,就交换他们两个。
//对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
//针对所有的元素重复以上的步骤,除了最后一个。
//持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
/*var arr=[9,30,4,89,75,456,2,7,-100,9];
var times=0;//次数
for(var i=0;i<arr.length-1;i++){//控制次数
-1:10个数字只需要两两比较9次。
for(var
j=0;j<arr.length-i-1;j++){//-i:i循环一次,j循环到底,每一次i的循环都已经排好一个数字。
if(arr[j]>arr[j+1]){
var temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
times++;
}
}
console.log(arr);
console.log(times);*/

}
var arr=[11,4,4,4,4,4,7,20,9,9,9,9,5,800,3,6,4,9];

//2.选择排序

alert(quicksort(arr));*/

//选择排序(Selection sort)是一种简单直观的排序算法。
它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,
直到全部待排序的数据元素排完。
/*var arr=[9,300,4,890,7500,456,20,70,-100,-9];
for(var i=0;i<arr.length;i++){
var minindex=i;//假设最小值的下标
var minvalue=arr[minindex];//假设最小值

//数组去重(方法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);*/

for(var j=i+1; j<arr.length;j++){
if(minvalue>arr[j]){
minvalue=arr[j];
minindex=j;
}
}
//如果上面的for循环完成,代表minindex就是最小值的下标。
if(minindex!=i){//如果minindex!=i说明找到了真正的最小值。否则就代表假设的刚好就是最小值。
var temp=arr[minindex]
arr[minindex]=arr[i];
arr[i]=temp;
}
}
console.log(arr);*/

//数组去重(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;
}*/

admin

网站地图xml地图