java折中查询算法代码 折半查找java代码

请教:用JAVA编一个基本查找算法效率比较的程序。

script

创新互联提供高防服务器租用、云服务器、香港服务器、电信内江机房

Array.prototype.swap = function(i, j)

{

var temp = this[i];

this[i] = this[j];

this[j] = temp;

}

Array.prototype.bubbleSort = function()

{

for (var i = this.length - 1; i 0; --i)

{

for (var j = 0; j i; ++j)

{

if (this[j] this[j + 1]) this.swap(j, j + 1);

}

}

}

Array.prototype.selectionSort = function()

{

for (var i = 0; i this.length; ++i)

{

var index = i;

for (var j = i + 1; j this.length; ++j)

{

if (this[j] this[index]) index = j;

}

this.swap(i, index);

}

}

Array.prototype.insertionSort = function()

{

for (var i = 1; i this.length; ++i)

{

var j = i, value = this[i];

while (j 0 this[j - 1] value)

{

this[j] = this[j - 1];

--j;

}

this[j] = value;

}

}

Array.prototype.shellSort = function()

{

for (var step = this.length 1; step 0; step = 1)

{

for (var i = 0; i step; ++i)

{

for (var j = i + step; j this.length; j += step)

{

var k = j, value = this[j];

while (k = step this[k - step] value)

{

this[k] = this[k - step];

k -= step;

}

this[k] = value;

}

}

}

}

Array.prototype.quickSort = function(s, e)

{

if (s == null) s = 0;

if (e == null) e = this.length - 1;

if (s = e) return;

this.swap((s + e) 1, e);

var index = s - 1;

for (var i = s; i = e; ++i)

{

if (this[i] = this[e]) this.swap(i, ++index);

}

this.quickSort(s, index - 1);

this.quickSort(index + 1, e);

}

Array.prototype.stackQuickSort = function()

{

var stack = [0, this.length - 1];

while (stack.length 0)

{

var e = stack.pop(), s = stack.pop();

if (s = e) continue;

this.swap((s + e) 1, e);

var index = s - 1;

for (var i = s; i = e; ++i)

{

if (this[i] = this[e]) this.swap(i, ++index);

}

stack.push(s, index - 1, index + 1, e);

}

}

Array.prototype.mergeSort = function(s, e, b)

{

if (s == null) s = 0;

if (e == null) e = this.length - 1;

if (b == null) b = new Array(this.length);

if (s = e) return;

var m = (s + e) 1;

this.mergeSort(s, m, b);

this.mergeSort(m + 1, e, b);

for (var i = s, j = s, k = m + 1; i = e; ++i)

{

b[i] = this[(k e || j = m this[j] this[k]) ? j++ : k++];

}

for (var i = s; i = e; ++i) this[i] = b[i];

}

Array.prototype.heapSort = function()

{

for (var i = 1; i this.length; ++i)

{

for (var j = i, k = (j - 1) 1; k = 0; j = k, k = (k - 1) 1)

{

if (this[k] = this[j]) break;

this.swap(j, k);

}

}

for (var i = this.length - 1; i 0; --i)

{

this.swap(0, i);

for (var j = 0, k = (j + 1) 1; k = i; j = k, k = (k + 1) 1)

{

if (k == i || this[k] this[k - 1]) --k;

if (this[k] = this[j]) break;

this.swap(j, k);

}

}

}

function generate()

{

var max = parseInt(txtMax.value), count = parseInt(txtCount.value);

if (isNaN(max) || isNaN(count))

{

alert("个数和最大值必须是一个整数");

return;

}

var array = [];

for (var i = 0; i count; ++i) array.push(Math.round(Math.random() * max));

txtInput.value = array.join("\n");

txtOutput.value = "";

}

function demo(type)

{

var array = txtInput.value == "" ? [] : txtInput.value.replace().split("\n");

for (var i = 0; i array.length; ++i) array[i] = parseInt(array[i]);

var t1 = new Date();

eval("array." + type + "Sort()");

var t2 = new Date();

lblTime.innerText = t2.valueOf() - t1.valueOf();

txtOutput.value = array.join("\n");

}

/script

body onload=generate()

table style="width:100%;height:100%;font-size:12px;font-family:宋体"

tr

td align=right

textarea id=txtInput readonly style="width:100px;height:100%"/textarea

/td

td width=150 align=center

随机数个数input id=txtCount value=500 style="width:50px"brbr

最大随机数input id=txtMax value=1000 style="width:50px"brbr

button onclick=generate()重新生成/buttonbrbrbrbr

耗时(毫秒):label id=lblTime/labelbrbrbrbr

button onclick=demo("bubble")冒泡排序/buttonbrbr

button onclick=demo("selection")选择排序/buttonbrbr

button onclick=demo("insertion")插入排序/buttonbrbr

button onclick=demo("shell")谢尔排序/buttonbrbr

button onclick=demo("quick")快速排序(递归)/buttonbrbr

button onclick=demo("stackQuick")快速排序(堆栈)/buttonbrbr

button onclick=demo("merge")归并排序/buttonbrbr

button onclick=demo("heap")堆排序/buttonbrbr

/td

td align=left

textarea id=txtOutput readonly style="width:100px;height:100%"/textarea

/td

/tr

/table

/body

这个代码是放在DREAMWEAVER head/head标签里面

Java用查找算法的一段代码如下: 其中boolean A=false; if(name.equals(arr[i])) 麻烦解释一下 尽量直白

数组从第一个开始比较,完全相同(当前数组值和输入值一模一样)A就赋值为true;不一样A的值不变

用JAVA编写一个简单的 查询算法!谢谢大哥大姐了

import java.io.*;

public class Test

{

/**

* @param args

*/

public static void main(String[] args) throws IOException

{

// TODO Auto-generated method stub

BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

String str=br.readLine();

System.out.println("请输入要查询的单词");

String s=br.readLine();

int count=0;

int m=0;

int begin=-1;

int end=-1;

while(true)

{

if(s.length()==1)

{

begin=str.indexOf(s);

if(m==0)

{

System.out.println("第一次出现在"+begin+"字节处");

}

m++;

end=begin;

}

else

{

begin=str.indexOf(s.substring(0,1));

if(m==0)

{

System.out.println("第一次出现在"+begin+"字节处");

}

end=str.indexOf(s.substring(s.length()-1));

}

if(begin==-1||end==-1)

{

break;

}

if(s.equals(str.subSequence(begin, end+1)))

{

count++;

str=str.substring(end+1);

}

else

{

str=str.substring(end+1);

}

}

System.out.println("单词"+s+"出现了"+count+"次");

}

}

JAVA排序查找问题,回答后请私信我,

public class Demo{

public static void main(String[] args){

int a[] = {28,39,49,78,23};

int x = 49;

//下面是最简单的冒泡排序

int temp;

for(int i=0; ia.length;++i){

    for(int j=a.length-1;ji;--j){

        if(a[j] a[j-1]){

           temp = a[j];

           a[j] = a[j-1];

           a[j-1] = temp;

       }

    }

}

System.out.println("排序完成:");

for(int emp:a){

System.out.print(emp+" ");

}

//下面是二分法查找(折中查找)

int first = 0;

int last = a.length-1;

int mid;

while(first=last){

mid = (first+last)/2;

if(a[mid]==x){

System.out.println("\n查找到x,在数组的第"+(mid+1)+"位");

break;

}

if(a[mid]x)

last = mid-1;

if(a[mid]x)

first = mid+1;

}

}

}

今天听到一个词,叫折中查询(java中),请教下折中查询是什么意思,能举例说明下最好

折中查询也叫折半查询,是一种查询方法,折中查询方法针对的是已经排好序的数列来说!

例如:有一组有序数列:3,6,8,10,20,23,28

现在让你用算法实现看看次数列中有没有15.。一般的方法是将数列中的数一个一个的跟15比较,直到结尾,这样要比较7次才能得出结果!

折中查询是这样的:

这是一个已经排好序的数列,所以找到这个数列中间位置的那个数,这里是10,用10跟15比较,发现要找的15比10大,所以10前面的数你就不用管了,只去10后面的数里面找,只剩:20,23,28了,看看有没有15,在10后面的数里,再找当中的那个数,这里是23,23要比15大,所以在去10到23之间里面找,15跟23里面已经没有数了,所以这个数列里面没有15.这种方法得出没有15的结果只做了2次比较,省事多了!

java关键字查询算法

就用readline方法,

一行一行地查吧,

楼上的算法还是可行的,

要指出在哪一行,

直接在readline中设置一个变量就可以了,

扫过一行自增就行

另外个人认为,

还要考虑这样一种情况,

比如说关键字为

java

ja

va

被分开在两行中了,

这个怎么算呢?


网页题目:java折中查询算法代码 折半查找java代码
网站链接:http://pwwzsj.com/article/hgdehe.html