二分ルックアップ配列要素の下の表
4819 ワード
二分ルックアップ配列要素の下の表
この方法はC++を勉強している間に見たもので、私は彼をjsに改造しました.アルゴリズムは言語を区別しません.
このメソッドを使用する前に配列をソートし、次に配列をソートします.
上のソートは普通の気泡発生法で、ソートしてから次の方法を使うことができます.
以下の長さが3未満の場合は実行しません.長さが小さすぎるのは普通の方法でもっと速いからです.
この方法はC++を勉強している間に見たもので、私は彼をjsに改造しました.アルゴリズムは言語を区別しません.
このメソッドを使用する前に配列をソートし、次に配列をソートします.
/*
*
* + +
*
* list
* ntype 0
*/
function ArraySort(list, ntype) {
var temp = "";
var max = 0;
while (max < list.length) {
for (var j = max + 1; j < list.length; j++) {
if (list[j] > list[max] && ntype == "1") {
temp = list[max];
list[max] = list[j];
list[j] = temp;
}
else if (list[j] < list[max] && ntype == "0") {
temp = list[max];
list[max] = list[j];
list[j] = temp;
}
}
max = max + 1;
}
return list;
}
上のソートは普通の気泡発生法で、ソートしてから次の方法を使うことができます.
以下の長さが3未満の場合は実行しません.長さが小さすぎるのは普通の方法でもっと速いからです.
/*
* , ,
* + +
*
* list
* val
* ,
*/
function SearchKey(list, val) {
//
var sort = 0; //0
if (list.length >= 3) {
if (list[0] > list[list.length - 1]) {
sort = 1;
}
}
var intlow = 0;
var intHigh = list.length - 1;
var result = "";
while (intHigh >= intlow) {
var intMid = parseInt((intlow + intHigh) / 2);
if (val > list[intMid]) {
if (sort == 0) {
intlow = intMid + 1
}
else {
intHigh = intMid - 1;
}
}
else if (val == list[intMid]) {
return intMid;
}
else if (val < list[intMid]) {
if (sort == 0) {
intHigh = intMid - 1;
}
else {
intlow = intMid + 1
}
}
}
return -intlow;
}