一、js实现回文串
实现原理:从前、从后同时遍历,比较arr[i]和arr[j],如果都一样就是回文串。
代码:
` var flag = true;
var arr = ['a','b','a'];
function huiwenchuan(arr){
if(arr.length == 1){
return flag ;
}else{
for(var i=0,j=arr.length-1;i<=j;i++,j--){
console.log(i+","+j);
if(arr[i] != arr[j]){
flag = false;
// console.log(i+","+j)
}else{
flag = true;
}
}
return flag;
}
}
huiwenchuan(arr); `
二、快速排序
原理:设定最左边的元素为小兵,分别从最左边个最右边设置游标,先从右向左遍历,如果右边的数大于小兵,位置不变,游标向前移动;如果右边的数比小兵小,那么右边游标不变,值和小兵进行交换,下一步就从左向右遍历.
代码:
/*快速排序*/
var arr =[1,2,5,4,12,11,16,8];
function swap(arr,i,j){
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp
return arr;
}
function quicksort(array,left,right){
var i = left, j=right;
var pivot = array[i];
while(i<j){
while(i<j && array[j]>=pivot){
j--;
}
if(i<j){
swap(array, i, j);
i++;
}
while(i<j && array[i]<=pivot){
i++;
}
if(i<j){
swap(array, i, j);
j--;
}
}
//务必加判断语句 否则会导致无限调用 堆溢出
if(i>left){
quicksort(array, left, j-1);
}
if(j<right){
quicksort(array, j+1, right);
}
return array;
}
quicksort(arr,0,8);