演算法和資料操作 查詢和排序

2022-01-19 21:30:12 字數 1723 閱讀 4893

查詢:順序查詢,二分查詢,雜湊表查詢,二叉排序樹查詢。

雜湊表和二叉排序樹考察重點在於資料結構而不是演算法

雜湊表的主要優點是我們利用他能夠在o(1)時間內查到某一元素,是效率最高的查詢方式:但是缺點是需要額外的空間來實現雜湊表。

二叉排序樹查詢演算法對應的資料結構是二叉搜尋樹

排序比查詢要複雜一些。比較插入、冒泡、歸併、快速等不同排序演算法的優劣

快速排序

public

class

quicksort

}//快速排序

public

static

void quick_sort(int s, int l, int

r)

if(i while(i < j && s[i] if(i }

s[i] =x;

quick_sort(s, l, i - 1); //

遞迴呼叫

quick_sort(s, i + 1, r);}}

public

static

void

main(string args);

quick_sort(num,0,9);

println(num);

}}

面試題11.旋轉陣列的最小數字

題目:把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的的乙個旋轉,輸出旋轉陣列的最小元素,例如為的乙個旋轉,該陣列的最小值為1

最簡思路:從頭到尾遍歷一遍陣列o(n),找到最小的元素但是達不到面試官的期待

旋轉之後的陣列可以劃分為兩個排序的子陣列,而且前面子陣列的元素都大於或等於後面子陣列的元素。我們還注意到最小的元素剛好是這兩個子陣列的分界線。在排序的陣列中我們可以用二分查詢o(logn)來尋找最小元素

,先把第乙個指標指向第0個元素,把第二個指標指向最後乙個元素,位於兩個指標中間的數字是5,他大於第乙個指標指向的數字,因此中間數字5一定是第乙個陣列的,而最小數字一定位於他的後面,因此移動第乙個指標,讓他指向陣列的中位數,此時兩個指標的中間數是1,小於第二個指標指向的數字,因此1是第二個陣列的元素,移動第二個指標指向1,這時,兩個指標已經緊挨著了,因此第二個指標指向最小值

然後考慮邊界條件補充這些情況

public

class

minvalarray

int p1=0,p2=length-1;

int res=p1;

//當左指標大於右指標

while(num[p1]>num[p2])

int mid=(p1+p2)/2;

if(num[mid]>num[p1])

if(num[mid]<=num[p2])

}//當左指標等於右指標

if(num[p1]==num[p2])}}

return

num[res];

}public

static

void

main(string args);

int num2=new

int;

int num3=new

int;

int num4=new

int{};

int num5=new

int;

system.out.println(minvalarray(num5));

}}

演算法和資料操作

掌握常用的二分查詢 快速排序 歸併排序。查詢 順序查詢 二分查詢 雜湊表查詢 二叉排序樹查詢。位運算可以看成是一類特殊的演算法,它是把數字表示成二進位制之後對0和1的操作,共有與 或 異或 左移和右移5種運算。雜湊表最主要的優點是能夠在o 1 時間來查詢某一元素,是效率最高的查詢方式。缺點是需要額外...

劍指offer 演算法和資料結構 查詢和排序

和資料結構一樣,演算法的面試題也備受面試官的青睞,其中排序和查詢是面試是考察演算法的重點。在準備面試的時候應該重點掌握二分查詢 歸併排序和快速排序,做到能隨時正確 完整地寫出它們的 查詢和排序都是在程式設計中常用到的演算法。查詢相對而言較為簡單,不外乎順序查詢 二分查詢 雜湊表查詢和二叉排序樹查詢。...

資料結構 演算法和資料操作

演算法和資料操作 重要的演算法 二分查詢 歸併排序和快速排序。查詢一般分為順序查詢 二分查詢 雜湊表查詢和二叉排序樹查詢。排序包括 選擇排序 插入排序 交換排序 歸併排序以及外排序等。快速排序 實現快速排序演算法的關鍵在於先在陣列中選擇乙個數字,接下來把陣列中的數字分為兩部分,比選擇的數字小的數字移...