順序查找
查找是指在一個給定的數(shù)據(jù)結(jié)構(gòu)中查找某個指定的元素。從線性表的第一個元素開始,依次將線性表中的元素與被查找的元素相比較,若相等則表示查找成功;若線性表中所有的元素都與被查找元素進(jìn)行了比較但都不相等,則表示查找失敗。
在下列兩種情況下也只能采用順序查找:
(1)如果線性表為無序表,則不管是順序存儲結(jié)構(gòu)還是鏈?zhǔn)酱鎯Y(jié)構(gòu),只能用順序查找。
(2)即使是有序線性表,如果采用鏈?zhǔn)酱鎯Y(jié)構(gòu),也只能用順序查找。
二分法查找
二分法只適用于順序存儲的,按非遞減排列的有序表,其方法如下:
設(shè)有序線性表的長度為n,被查找的元素為i,
(1)將i與線性表的中間項進(jìn)行比較;
(2)若i與中間項的值相等,則查找成功;
(3)若i小于中間項,則在線性表的前半部分以相同的方法查找;
(4)若i大于中間項,則在線性表的后半部分以相同的方法查找。
交換類排序法
冒泡排序法和快速排序法都屬于交換類排序法。
(1)冒泡排序法
首先,從表頭開始往后掃描線性表,逐次比較相鄰兩個元素的大小,若前面的元素大于后面的元素,則將它們互換,不斷地將兩個相鄰元素中的大者往后移動,最后者到了線性表的最后。
然后,從后到前掃描剩下的線性表,逐次比較相鄰兩個元素的大小,若后面的元素小于前面的元素,則將它們互換,不斷地將兩個相鄰元素中的小者往前移動,最后最小者到了線性表的最前面。
對剩下的線性表重復(fù)上述過程,直到剩下的線性表變空為止,此時已經(jīng)排好序。
在最壞的情況下,冒泡排序需要比較次數(shù)為n(n-1)/2。
(2)快速排序法
它的基本思想是:任取待排序序列中的某個元素作為基準(zhǔn)(一般取第一個元素),通過一趟排序,將待排元素分為左右兩個子序列,左子序列元素的排序碼均小于或等于基準(zhǔn)元素的排序碼,右子序列的排序碼則大于基準(zhǔn)元素的排序碼,然后分別對兩個子序列繼續(xù)進(jìn)行排序,直至整個序列有序。
疑難解答:冒泡排序和快速排序的平均執(zhí)行時間分別是多少?
冒泡排序法的平均執(zhí)行時間是O(n2),而快速排序法的平均執(zhí)行時間是O(nlog2n)。