演算法設計與分析之 排序篇

2021-10-09 16:58:48 字數 1563 閱讀 6838

本篇列出了以下演算法

1 二分查詢

2 氣泡排序

3 插入排序

4 二路歸併排序

5 快速排序

6 選擇排序

二分查詢

public

static

intarraybinarysearch

(int

array,

int key)

if(key>array[mid]

)else

}return-1

;}

氣泡排序

public

static

int[

]arraybubblesort

(int

array)}}

return array;

}

插入排序

public

static

int[

]arrayinsertsort

(int

array)

array[i]

=temp;}}

return array;

}

二路歸併排序

public

static

void

merge

(int

array,

int p,

int t,

int q)

else

}while

(i>t && j<=q)

while

(i<=t)

for(k =

0,i = p; k,k++

)}

快速排序

public

static

int[

]arrayquicksort

(int

array,

int low,

int high)

if(iwhile

(array[i]

if(i}while

(i!=j)

; array[i]

=temp;

arrayquicksort

(array,low,i-1)

;arrayquicksort

(array,i+

1,high);}

return array;

}

選擇排序

public

static

int[

]arrayselectsort

(int

array)

}int temp =array[i]

; array[i]

=array[min]

; array[min]

=temp;

}return array;

}

演算法設計與分析 堆排序

後記乙個高效的排序演算法,對整個計算機領域的貢獻都是極大的。在我看來,堆排序演算法就是這樣一種高效的排序演算法,它本身的設計就是非常巧妙的。等我以後寫了二叉樹分析的部落格再附上我自己的,嘿嘿。一棵父節點元素一定大於等於子節點元素的完全二叉樹 以上不是水字數,只是附上我的理解罷了 如上圖,看第二個,首...

演算法設計與分析 氣泡排序

1 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。2 對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。3.針對所有的元素重複以上的步驟,除了最後乙個。4.持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。時間複雜度 若檔案...

演算法設計與分析 快速排序

設要排序的陣列是a 0 a n 1 首先任意選取乙個資料 通常選用陣列的第乙個數 作為關鍵資料,然後將所有比它小的數都放到它左邊,所有比它大的數都放到它右邊,這個過程稱為一趟快速排序。值得注意的是,快速排序不是一種穩定的排序演算法,也就是說,多個相同的值的相對位置也許會在演算法結束時產生變動。假設一...