Javascript实现的常用算法(如冒泡、快速、鸽巢、奇偶等)
JavaScript算法 实现 快速 常用 冒泡 奇偶
2023-06-13 09:15:25 时间
l=[6,2,4,1,98,34,5,9,23,8,10,32]
//冒泡排序
/*functionbubbleSort(arr){
newarr=arr.slice()
if(newarr.length<=2)returnnewarr
for(vari=0;i<newarr.length-1;i++){
for(varj=0;j<newarr.length-i-1;j++){
if(newarr[j]>newarr[j+1]){
newarr[j]=[newarr[j+1],newarr[j+1]=newarr[j]][0]
}
}
}
returnnewarr
}
console.log(l)
result=bubbleSort(l)
console.log(result)*/
//快速排序
/*functionquickSort(arr){
if(arr.length<=1)returnarr;
varleft=[],
right=[],
middle=[];
varmid=arr[Math.floor(arr.length/2)]
for(vari=0;i<arr.length;i++){
if(arr[i]<mid){
left.push(arr[i]);
}elseif(arr[i]>mid){
right.push(arr[i]);
}else{
middle.push(mid);
}
}
return[].concat(quickSort(left),middle,quickSort(right))
}
varresults=quickSort(l)
console.log(results)
*/
//选择排序
/*functionselectSort(arr){
varmin=9999,
minindex=0;
varleft=[],
right=arr.slice();
if(arr.length<=1)returnarr;
for(vari=0;i<arr.length;i++){
if(arr[i]<=min){
min=arr[i];
minindex=i;
}
}
left.push(min);
right.splice(minindex,1);
return[].concat(left,selectSort(right))
}
varresults=selectSort(l)
console.log(results)*/
//插入排序
/*functioninsertSort(arr){
vartmp;
for(vari=1;i<arr.length;i++){
tmp=arr[i];
for(varj=i;j>0;j--){
if(arr[j-1]>tmp){
arr[j]=arr[j-1];
}else{
break;
}
}
arr[j]=tmp;
}
returnarr;
}
varresults=insertSort(l)
console.log(results)*/
//木桶排序
/*functionbucketSort(arr){
varbucket=[];
varnewarr=[];
for(vari=0;i<arr.length;i++){
bucket[arr[i]]=arr[i];
}
for(vari=0;i<bucket.length;i++){
if(bucket[i]!==undefined){
newarr.push(bucket[i])
}
}
returnnewarr;
}
varresults=bucketSort(l)
console.log(results)*/
//鸽巢排序,非负整数
/*functionpigeonholeSort(arr){
vartempArr=[];
for(vari=0,l=arr.length;i<l;i++){
tempArr[arr[i]]=(tempArr[arr[i]]+1)||1;
}
varresult=[],count;
for(vark=0;k<tempArr.length;k++){
count=tempArr[k];
if(count){
for(vari=0;i<count;i++){
result.push(k);
}
}
}
returnresult;
}
varresults=pigeonholeSort(l)
console.log(results)*/
//归并排序
/*functionmergeSort(arr){
if(arr.length<=1)returnarr;
varmid=Math.floor(arr.length/2);
varleft=MergeSort(arr.slice(0,mid));
varright=MergeSort(arr.slice(mid));
varresult=[];
while(left.length&&right.length){
if(left[left.length-1]<=right[0]){
result=result.concat(left);
left=[];
}elseif(right[right.length-1]<left[0]){
result=result.concat(right);
right=[];
}else{
if(right[0]<left[0]){
result.push(right.shift());
}else{
result.push(left.shift());
}
}
}
result=result.concat(left,right);
returnresult;
}*/
/*functionmergeSort(arr){
varmerge=function(left,right){
varresult=[];
while(left.length>0&&right.length>0){
if(left[0]<right[0]){
result.push(left.shift());
}else{
result.push(right.shift());
}
}
returnresult.concat(left).concat(right);
}
if(arr.length==1)returnarr;
varmiddle=Math.floor(arr.length/2),
left=arr.slice(0,middle),
right=arr.slice(middle);
returnmerge(mergeSort(left),mergeSort(right));
}
varresults=mergeSort(l)
console.log(results)
*/
//堆排序
/*functionheapSort(arr){
varfindRoot=function(arr,p,length){
p=p||0;
length=length||arr.length;
varself=arguments.callee;
varl=p*2+1;
varr=(p+1)*2;
varleft,right;
if(l<length)left=self(arr,l,length);
if(r<length)right=self(arr,r,length);
if(left>arr[p])arr[p]=[left,arr[l]=arr[p]][0];
if(right>arr[p])arr[p]=[right,arr[r]=arr[p]][0];
returnarr[p];
};
for(vari=arr.length;i>0;i--){
findRoot(arr,0,i);
arr[i-1]=[arr[0],arr[0]=arr[i-1]][0];
}
returnarr;
}
varresults=heapSort(l)
console.log(results)*/
//奇偶排列
/*functionoddEvenSort(arr){
varswaped=true,
k=0;
while(swaped){
if(k>0)swaped=false;
for(vari=k;i<arr.length-1;i+=2){
if(arr[i]>arr[i+1]){
arr[i]=[arr[i+1],arr[i+1]=arr[i]][0];
swaped=true;
}
}
k=[1,0][k]
}
returnarr;
}
varresults=oddEvenSort(l)
console.log(results)*/
functionoddEvenSort(arr){
varswaped=true;
while(swaped){
swaped=false;
for(vari=0;i<arr.length;i+=2){
if(arr[i]>arr[i+1]){
arr[i]=[arr[i+1],arr[i+1]=arr[i]][0];
swaped=true;
}
}
for(vari=1;i<arr.length;i+=2){
if(arr[i]>arr[i+1]){
arr[i]=[arr[i+1],arr[i+1]=arr[i]][0];
swaped=true;
}
}
}
returnarr;
}
varresults=oddEvenSort(l)
console.log(results)
相关文章
- 编写js程序实现n的阶乘_javascript矩阵算法
- 【说站】JavaScript二分查找算法的使用
- 「数据结构与算法Javascript描述」栈
- 「数据结构与算法Javascript描述」链表
- html script 换行,JavaScript中怎么换行
- JavaScript算法笔试[通俗易懂]
- JavaScript刷LeetCode贪心算法篇
- javascript 算法系列之 树 必出精品(1)
- JavaScript专项算法题(2):函数式编程
- javascript中两种基本常用排序算法分析详解编程语言
- 2015:JavaScript 之于物联网
- JavaScript中的View-Model使用介绍
- Javascript异步加载详解(浏览器在javascript的加载方式)
- JavaScript全排列的六种算法具体实现
- 详解JavaScript函数绑定
- 浅析JavaScript中的常用算法与函数
- JavaScript实现的图像模糊算法代码分享
- JavaScript中实现PHP的打乱数组函数shuffle实例
- javascript中实现兼容JAVA的hashCode算法代码分享
- JavaScript中九种常用排序算法