当全局变量和局部变量重合时采用就近原则。
辗转相除法:
辗转相除法的基本思路是,对正整数a和b,连续进行求余运算,直到余数为0为止,此时非0的除数就是最大公约数。设r=a mod b表示a除以b的余数,若r≠0,则将b作为新的a,r作为新的b,重复a mod b运算,直到r=0时为止,此时b为所求的最大公约数。例如,50和15的最大公约数的求解过程可表示为:Gcd(50, 15)=Gcd(15, 5)=Gcd(5, 0)=5。
快速排序:
、、快速排序
function swap (arr,low,high) {
var temp;
temp=arr[low];
arr[low]=arr[high];
arr[high]=temp;
}
function rKey(arr,low,high) {
var pkey=arr[low];
while (low<high) {
while (high>low&&(arr[high]>=pkey)) {
high--;
}
swap(arr,low,high);
while (high>low&&(arr[low]<=pkey)) {
low++;
}
swap(arr,low,high);
}
return low;
}
function qSort(arr,low,high) {
if (high>low) {
var key=rKey(arr,low,high);
qSort(arr,low,key-1);
qSort(arr,key+1,high);
}
}
function Qsort(arr) {
qSort(arr,0,arr.length-1);
}
Qsort(arr);
console.log(arr);
归并排序:
// 归并排序
var arr=[23,4,6,1,8,9,22,33,55,2];
function merge(arr,start,mid,end) {
var arr1=[];
var i=start;
var j=mid+1;
var k=0;
while (i<=mid&&j<=end) {
if (arr[i]<arr[j]) {
arr1[k++]=arr[i++];
}else {
arr1[k++]=arr[j++];
}
}
if (i==mid+1) {
while (j<end+1){
arr1[k++]=arr[j++];
}
}
if (j==end+1) {
while (i<mid+1) {
arr1[k++]=arr[i++];
}
}
for (var a=0,b=start;a<k;a++,b++) {
arr[b]=arr1[a];
}
// return arr;
}
function mergeSort(arr,start,end) {
if (start>=end) {
return;
}
var mid=parseInt((start+end)/2);
mergeSort (arr,start,mid);
mergeSort (arr,mid+1,end);
merge(arr,start,mid,end);
// console.log (arr);
}
mergeSort(arr,0,arr.length-1);
// merge(arr,0,4,9);
console.log (arr);