查詢(一) 線性查詢之順序查詢和折半查詢

2021-07-11 17:23:44 字數 2498 閱讀 8694

在我們的生活中,無處不存在著查詢,比如找一下班裡哪個mm最pl,猜一猜mm的芳齡....... 對的這些都是查詢。

在我們的演算法中,有一種叫做線性查詢。

分為:順序查詢。

折半查詢。

查詢有兩種形態:

分為:破壞性查詢,   比如有一群mm,我猜她們的年齡,第一位猜到了是23+,此時這位mm已經從我腦海裡面的mmlist中remove掉了。

哥不找23+的,所以此種查詢破壞了原來的結構。

非破壞性查詢, 這種就反之了,不破壞結構。

順序查詢:

這種非常簡單,就是過一下陣列,乙個乙個的比,找到為止。

1

using system;

2using system.collections.generic;

3using system.linq;

4using system.text;56

namespace sequential

7 ;13

14var result = sequencesearch(list, 3);

1516

if (result != -1)

17 console.writeline("

3 已經在陣列中找到,索引位置為:

" + result);

18else

19 console.writeline("

嗚嗚,沒有找到!

");20

21 console.read();

22 }

2324

//順序查詢

25static

int sequencesearch(list list, int key)

26

33//

未能查詢,返回-1

折半查詢: 這種查詢很有意思,就是每次都砍掉一半,

比如"幸運52「中的猜**遊戲,**在999元以下,1分鐘之內能猜到幾樣給幾樣,如果那些選手都知道折半查詢,

那結果是相當的啊。

不過要注意,這種查詢有兩個缺點:

第二: 這種查詢只限於線性的順序儲存結構。

上**:

1

using system;

2using system.collections.generic;

3using system.linq;

4using system.text;56

namespace binarysearch

7 ;13

14var result = binarysearch(list, 45);

1516

if (result != -1)

17 console.writeline("

45 已經在陣列中找到,索引位置為:

" + result);

18else

19 console.writeline("

嗚嗚,沒有找到!

");20

21 console.read();

22 }

2324

///25

///折半查詢

26///

27///

28///

29public

static

int binarysearch(list list, int key)

30

46else

47if (list[middle] > key)

48

52else

53

57 }

58//

未找到59

先前也說過,查詢有一種形態是破壞性的,那麼對於線性結構的資料來說很悲慘,因為每次破壞一下,

可能都導致陣列元素的整體前移或後移。

所以線性結構的查詢不適合做破壞性操作,那麼有其他的方法能解決嗎?嗯,肯定有的,不過要等下一天分享。

ps:  線性查詢時間複雜度:o(n);

折半無序(用快排活堆排)的時間複雜度:o(nlogn)+o(logn);

折半有序的時間複雜度:o(logn);

查詢演算法練習一(線性查詢 折半查詢)

public class searchalgorithm 輸入資料陣列 測試資料有序 public static int binarysearch data public static void main string args 線性查詢 演算法思想 從一端開始逐一檢查每個元素,直到找到所需元素的過...

順序查詢和折半查詢

順序查詢可以是線性表也可以是鍊錶,同是既可以是有序的也可以是無序。折半查詢僅適用於有序的線性表 include include define elemtype inttypedef struct sstable 表的資料結構 void creatss sstable st 建立線性表 void pr...

靜態查詢(順序查詢和折半查詢)

聽說過一句話,程式設計之久,除了資料結構和演算法什麼也不屬於我們。為了更好的學習資料結構和演算法,今天決定先把清華大學出版的資料結構 c語言版 書中的演算法實現一遍。現在開始第一彈。貴在堅持。順序查詢 演算法描述 include include 順序表的查詢 define eq a,b a b de...