(一)二分法查詢
二分法查詢其實就是折半查詢,一種效率較高的查詢方法。針對有序陣列來查詢的。
主要思想是:(設查詢的陣列期間為array[low, high])
(1)確定該期間的中間位置k
(2)將查詢的值t與array[k]比較。若相等,查詢成功返回此位置;否則確定新的查詢區域,繼續二分查詢。區域確定如下:
a.array[k]>t 由陣列的有序性可知array[k,k+1,……,high]>t;故新的區間為array[low,……,k-1]
b.array[k]
時間複雜度:o(log2n);
public class bubbletest
if(value > array[middle])
if(value < array[middle])
}return -1;
}public static void main(string args)
;int value = binary(a, 9);
system.out.println(value);
}}
(二)快速排序
(二)快速排序演算法
快速排序是盡量避免額外計算的極好例子.其工作方式是在陣列中劃分出小的和大的元素
基本思想是:
從陣列中取出乙個元素作為基準值
把其他元素分為兩組:
「小的」是那些小於基準值的元素。
「大的」是那些大於基準值的元素,
遞迴對這兩個組做排序。
快速排序快速的原因在於:一旦知道了某個元素比基準值小,它就不需要在與那些大的元素比較。而大的元素也不需要在與小的元素比較,這個性質使快速排序比簡單排序、氣泡排序快的多。
時間複雜度:o(nlogn)
public static void quicksort(int a, int start, int end)
if(end-j>1)
}
資料結構 實現棧
include include include define node len sizeof node 1 pstack ptop pstack pbottom都指向節點 typedef struct node pnode,node typedef struct stack pstack,stack...
資料結構 棧實現
棧和佇列不一樣,棧是後進先出。實現時用了陣列儲存棧,陣列大小根據內容自動擴充。廢話不多說,上 c mystack.h pragma once templateclass mystack templateint mystack getcount templatet mystack top templa...
資料結構 C 實現
之前的2周一直在學資料結構,頭都大了。我是之前對資料結構一點認識都沒有,我是直接看書懟的,我看的是 大話資料結構 前面的講解還不錯,到了樹 圖後,就有點看不懂了,因為直接講的 我想一般人類都不可能看得懂,尤其是kmp演算法那,簡直是天書,我最後還是看別人的部落格才勉強參透,但無論如何,大話資料結構的...