演算法 基礎 常見排序演算法

2021-07-27 19:09:16 字數 2320 閱讀 3148

//如果h位比flag小,則需要交換,在此處進行。

if(l

//從l位開始,如果比flag小就將l向右移動,即l++。

while

(l<=flag)

//如果l位比flag大,則需要交換,在此處進行

if(l

>flag)

}//一趟結束,判斷flag兩端的子陣列是否需要排序

if(l>low)

if(h

}

public

static

void

createmaxdheap

(int

data,

int lastindex)}if

(data[k]

< data[biggerindex])}}}}

public

static

void

main

(string[

] args)

;for

(int i=

1;i++i)

array[j+1]

= array[j]

; array[j]

= flagnum;}}

//列印結果

for(

int i : array)

}

public

static

void

shellsort

(int

array)

else}}}}}

public

static

void

sort

(int

arr)

}//把flag位置與本趟排序的起點位置的數字交換

int t = arr[i]

; arr[i]

= arr[flag]

; arr[flag]

= t;

}}

private

static

void

radixsort

(int

array)

;int times =

gethighestdigit

(array)

;for

(int i =

0; i < times; i++

)//從桶取出

int index =0;

for(

int j =

0; j < container.length; j++)}

}}//獲取陣列最大數的位數

private

static

intgethighestdigit

(int array)

}return string.

valueof

(max)

.length()

;}// 獲取number第digit位上的數字

// digit starts from 0

private

static

intgetnumatdigit

(int number,

int digit)

return result;

}

public

static

void

mergesort

(int

array,

int left,

int right)

}private

static

void

merge

(int

arr,

int left,

int right)

if(indexb > right)

if(arr[indexa]

)else

}for

(int i = left,j=

0; i <= right; i++

,j++

)}

常見排序演算法 選擇排序演算法

原理 1.選擇排序需要定義三個變數,i表示外層迴圈即for i 0 i 2.當i 0時,min初始值為i,此時min 0。內層迴圈j i 1開始到length 1處結束。當j 1時,比較a j 與a min 如果a j a min 則記錄最小值索引即min j。即if a j a min 當j 1時...

常見排序演算法 堆排序演算法

基本思想 先將待排序資料化為完全二叉樹,從length 2 1處開始尋找他的左 右子節點,將較大值與父節點進行交換,最後遍歷到根節點處,此時根節點為所有數中的最大值,將該值與最後乙個元素進行交換,length length 1,又從父節點開始進行比較,繼續尋找較大值。將找到的較大值與length 2...

常見排序演算法

一.選擇排序 1.概念 每次從無序的子陣列裡面選擇最小的數,放在有序區的後面 既與無序區的首元素交換 不穩定排序 時間複雜度o n 2 輔助儲存o 1 2.實現 int selection sort int a,int len len為陣列元素個數 二.氣泡排序 1.概念 重複訪問數列n 1次,每次...