基礎演算法 排序(一)

2021-09-24 15:50:12 字數 1089 閱讀 8888

氣泡排序的基本思路是:

它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果他們的順序(如從大到小、首字母從a到z)錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。

氣泡排序總的平均時間複雜度為o(n2) 。

public static void bubblesort(int arr) ;

for(int i =0;iarr[j+1])

}

}}

快速排序(quicksort)是對氣泡排序的一種改進。

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

一趟快速排序的演算法是: 1)設定兩個變數i、j,排序開始的時候:i=0,j=n-1;

2)以第乙個陣列元素作為關鍵資料,賦值給key,即key=a[0];

3)從j開始向前搜尋,即由後開始向前搜尋(j–),找到第乙個小於key的值a[j],將a[j]和a[i]的值交換;

4)從i開始向後搜尋,即由前開始向後搜尋(i++),找到第乙個大於key的a[i],將a[i]和a[j]的值交換;

5)重複第3、4步,直到i=j;

(3,4步中,沒找到符合條件的值,即3中a[j]不小於key,4中a[i]不大於key的時候改變j、i的值,使得j=j-1,i=i+1,直至找到為止。找到符合條件的值,進行交換的時候i,

j指標位置不變。另外,i==j這一過程一定正好是i+或j-完成的時候,此時令迴圈結束)。

class quick else}

/*關鍵資料放到『中間』*/

sutil.swap(targetarr,start,j);

if(start>

voidquicksort(ttargetarr,intstart,intend)

if(i快速排序時間複雜度為o(nlogn)

基礎演算法 排序 一

總結 排序演算法維基百科 經典排序演算法 快速排序quick sort 經典排序演算法 桶排序bucket sort 經典排序演算法 插入排序insertion sort 經典排序演算法 基數排序radix sort 經典排序演算法 鴿巢排序pigeonhole sort 經典排序演算法 歸併排序m...

基礎演算法 排序 一

排序可以說時最基礎的演算法之一,排序就是將資料按照某種邏輯重新排列的過程,比如從大到小排序 從小到大排序 排序非常常見比如有購物車物品的排序 歷史訂單的排序等等 演算法我們比較關心的主要有兩點 時間複雜度與空間複雜度,排序演算法一樣 這篇文章只介紹幾種基本的排序演算法 氣泡排序 插入排序 選擇排序 ...

一 基礎排序演算法

一 氣泡排序 氣泡排序是可用的最慢的排序演算法之一,但是它也是最容易理解和實現的一種排序演算法。這種排序的得名是由與數值 像氣泡一樣 從序列的一端浮動到另外一端。假設現在要把一列數按公升序的方式進行排序,將較大的數值浮動到右側,而小的浮動到左側。這種效果可以通過氣泡排序來實現,具體 如下 首先新建乙...