//如果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次,每次...