Searching: Sequential Search In Ordered Table

本文介绍了一种在已排序的记录表中进行顺序搜索的算法,该算法利用递增的键值来查找指定的键,并通过Java实现示例展示了整个搜索过程。

Algorithm T

Algorithm T (Sequential search in ordered table). Given a table of records
R1, R2,…, RN whose keys are in increasing order K1 < K2 < … < KN,
this algorithm searches for a given argument K. For convenience and speed,
the algorithm assumes that there is a dummy record RN+1 whose key value is
KN+1 = Positive Infinite > K.
T1. [Initialize.] Set i <– 1.
T2. [Compare.] If K <= Ki, go to T4.
T3. [Advance.] Increase i by 1 and return to T2.
T4. [Equality?] If K = Ki, the algorithm terminates successfully. Otherwise it
terminates unsuccessfully. |


Java program

In this program, R1,…,RN were simplified to K1,…,KN.

/**
 * Created with IntelliJ IDEA.
 * User: 1O1O
 * Date: 12/10/13
 * Time: 6:52 PM
 * :)~
 * Sequential Search In Ordered Table:Searching
 */
public class Main {

    public static void main(String[] args) {
        int N = 16;
        int[] K = new int[18];

        /*Prepare the ordered data table*/
        K[1] = 61;
        K[2] = 87;
        K[3] = 154;
        K[4] = 170;
        K[5] = 275;
        K[6] = 426;
        K[7] = 503;
        K[8] = 509;
        K[9] = 512;
        K[10] = 612;
        K[11] = 653;
        K[12] = 677;
        K[13] = 703;
        K[14] = 765;
        K[15] = 897;
        K[16] = 908;

        /*Output sorted Ks*/
        System.out.println("Sorted Ks:");
        for(int i=1; i<=N; i++){
            System.out.println(i+":"+K[i]);
        }
        System.out.println();

        /*Kernel of the Algorithm!*/
        int Key = 653;               /*Key to be found*/
        int i;
        K[N+1] = 10000;              /*Positive infinite*/

        for(i=1; i<=N+1; i++){
            if(Key <= K[i]){
                break;
            }
        }
        if(Key == K[i]){
            System.out.println("Outputs: "+Key+" in K["+i+"].");
        }else {
            System.out.println("Outputs: "+Key+" not found.");
        }
    }
}

Outputs

Sorted Ks:
1:61
2:87
3:154
4:170
5:275
6:426
7:503
8:509
9:512
10:612
11:653
12:677
13:703
14:765
15:897
16:908

Outputs: 653 in K[11].

Reference

<< The art of computer programming: Sorting and Searching >> VOLUME 3, DONALD E. KNUTH

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值