Linux配置root初始密碼
阿新 • • 發佈:2022-03-31
選擇排序
function SelectSort(arr){ let i,j; let min; for(j=0;j<=arr.length-2;j++){ min=j; for(i=j;i<=arr.length-1;i++){ if(arr[i]<arr[min]){ min=i; } } swap(arr,j,min); } output(arr); }
氣泡排序
function BubbSort(arr){ let i,j;for(j=arr.length-1;j>=1;j--){ for(i=0;i<=j;i++){ if(arr[i]>arr[i+1]){ swap(arr,i,i+1); } } } output(arr); }
插入排序
function InsertSort(arr){ let i,j; for(i=1;i<arr.length-1;i++){ for(j=i;j>=1&&arr[j]<arr[j-1];j--){ swap(arr,j,j-1); } } output(arr); }
歸併排序
function MergeSort(arr,l,r){ let mid; if(l<r){ mid=Math.floor((l+r)/2); MergeSort(arr,l,mid); MergeSort(arr,mid+1,r); Merge(arr,l,mid,r); } } function Merge(arr,l,mid,r){ let help=new Array(r-l+1); let p1,p2,i; i=0; p1=l;p2=mid+1; while(p1<=mid&&p2<=r){ help[i++]=arr[p1]<arr[p2]?arr[p1++]:arr[p2++]; } while(p1<=mid){ help[i++]=arr[p1++]; } while(p2<=r){ help[i++]=arr[p2++]; } for(i=0;i<=r-l;i++){ arr[l+i]=help[i]; } }
快排(荷蘭國旗問題引出快排)
function QuickSort(arr,l,r){ if(l<r){ let Random=Math.floor(l+Math.random()*(r-l)); swap(arr,Random,r); let p=GuoQi(arr,l,r); QuickSort(arr,l,p[0]); QuickSort(arr,p[1],r); } } function GuoQi(arr,l,r){ let less,more,i; let flag=arr[r]; less=l-1;more=r;i=l; while(i<more){ if(arr[i]<flag){ swap(arr,++less,i++); } else if(arr[i]>flag){ swap(arr,--more,i); } else{ i++; } } swap(arr,more++,r); let tmp=new Array(less,more); return tmp; }
堆排
function HeapSort(arr){ let i;heapsize=arr.length-1; /*for(i=heapsize;i>=0;i--){ HeapIfy(arr,i,heapsize); }*/ for(i=1;i<=heapsize;i++){ HeaInsert(arr,i); } while(heapsize>=0){ swap(arr,0,heapsize--); HeapIfy(arr,0,heapsize); } output(arr); } function HeapIfy(arr,index,heapsize){ while(index*2+1<=heapsize){ let max=index*2+1; if((index*2+2)<=heapsize&&arr[index*2+2]>arr[index*2+1]){ max =index*2+2; } if(arr[index]>=arr[max]){ break; } else{ swap(arr,index,max); index=max; } } } function HeaInsert(arr,index){ while(arr[index]>arr[(index-1)/2]){ swap(arr,index,(index-1)/2); index=(index-1)/2; } }
基數排序
function RadixSort(arr){ let digit=GetMaxDigit(arr); let radix=10; let count=new Array(10); let i,j,p; for(p=0;p<=9;p++){ count[p]=new Array(); } for(i=0;i<=digit;i++){ for(j=0;j<=arr.length-1;j++){ p=GetDigit(arr[j],i); count[p].push(arr[j]); } j=0; for(p=0;p<=9;p++){ if(count[p]){ for(let tmp in count[p]){ arr[j++]=count[p].shift(); } } } } output(arr); } function GetMaxDigit(arr){ let max=0; for(let i=0;i<=arr.length-1;i++){ max=arr[max]>arr[i]?max:i; } let ret=0; if(Math.floor(arr[max]/10)!=0){ ret++; } return ret; } function GetDigit(num,d){ for(let i=0;i<d;i++){ Math.floor(num/=10); } return Math.floor(num%10); }
一些呼叫
function swap(arr,p1,p2){ [arr[p1],arr[p2]]=[arr[p2],arr[p1]]; } function output(arr){ for(let i in arr){ console.log(arr[i]); } } let arr =new Array(3,2,4,6,1,7,3,5,9); //SelectSort(arr); //BubbSort(arr); //InsertSort(arr); //l=0;r=arr.length-1; //MergeSort(arr,l,r); //output(arr); //QuickSort(arr,l,r); //output(arr); //HeapSort(arr); RadixSort(arr);