1.线性搜索
//A为数组,x为要搜索的值
var mycars=new Array("Saab","Volvo","BMW")
function linearSearch(A, x) {
for (var i = 0; i < A.length; i++) {
if (A[i] == x) {
return i;
}
}
return -1;
}
alert(linearSearch(mycars,"BMW"));
2.二分搜索
//A为已按"升序排列"的数组,x为要查询的元素
//返回目标元素的下标
var mycars4=new Array("6","7","8","9")
function binarySearch(A, x) {
var low = 0, high = A.length - 1;
while (low <= high) {
var mid = Math.floor((low + high) / 2); //下取整
if (x == A[mid]) {
return mid;
}
if (x < A[mid]) {
high = mid - 1;
}
else {
low = mid + 1;
}
}
return -1;
}
alert(binarySearch(mycars4,"9"));
3.冒泡排序
var mycars5=new Array(1234,31,100,65,2,23,123,123412,12356,1234,123,12565,4,343,24,2424,2413,567,845,237);
function bubbleSort(A) {
for (var i = 0; i < A.length; i++) {
var sorted = true;
//注意:内循环是倒着来的
for (var j = A.length - 1; j > i; j--) {
if (A[j] < A[j - 1]) {
swap(A, j, j - 1);
sorted = false;
}
}
if (sorted) {
return A;
}
}
}