检索算法——顺序查找(最大值、最小值、自组织数据)
/* function seqSearch(arr, data) {//等价于:arr.indexOf(data),内置indexOf()方法效率较高 for ( var i = 0; i < arr.length; ++i) { if (arr[i] == data) { return i; } } return -1; } */ /* function findMin(arr) {//easy var min = arr[0]; for ( var i = 1; i < arr.length; ++i) { if (arr[i] < min) { min = arr[i]; } } return min; } function findMax(arr) {//easy var max = arr[0]; for ( var i = 1; i < arr.length; ++i) { if (arr[i] > max) { max = arr[i]; } } return max; } */ function swap(arr, index, index1) { temp = arr[index]; arr[index] = arr[index1]; arr[index1] = temp; } function seqSearch(arr, data) { for ( var i = 0; i < arr.length; ++i) { if (arr[i] == data) { if (i > 0) { swap(arr, i, i - 1);//1.自组织数据,优化效果 } return true; } } return false; } var numbers = [ 5, 1, 7, 4, 2, 10, 9, 3, 6, 8 ]; for ( var i = 1; i <= 3; i++) { seqSearch(numbers, 4); document.write(numbers + "<br />"); } function seqSearch1(arr, data) {//2.使用自组织数据,优化查找 for ( var i = 0; i < arr.length; ++i) { if (arr[i] == data && i > (arr.length * 0.2)) { //使用“ 80-20 原则” 的概率分布——帕累托( Pareto) 分布 swap(arr, i, 0); return true; } else if (arr[i] == data) { return true; } } return false; } for ( var i = 1; i <= 3; i++) { seqSearch(numbers, 4); document.write(numbers + "<br />"); }