氣泡排序
void
bubblesort
(int
arr)}}
}
選擇排序void
selectsort
(int
arr)}}
}
插入排序void
insertsort
(int arr)
}}}
希爾排序
關鍵思想
void
shellsort
(int
arr)}}
}}
歸併排序
遞迴的終止
每次 return 都返回乙個新陣列
歸併過程的三個索引
int
mergesort
(int
arr)
private
int[
]merge
(int
arr ,
int l ,
int r);}
int mid =
(l + r)/2
;int
larr =
merge
(arr , l , mid)
;int
rarr =
merge
(arr , mid +
1, r)
;int
res =
newint
[r - l +1]
;for
(int i =
0, lindex =
0, rindex =
0; i < r - l +
1; i ++
)else
}return res;
}
快排
三個索引
終止條件
void
quicksort
(int
arr)
private
static
void
_quicksort
(int
arr ,
int l ,
int r)
int target = arr[l]
;int lidx = l +
1, ridx = r;
// 因為要讓兩個元素的也能進入,所以終止條件取 =,即:
// lidx 最終代表的 >= target 的
// ridx 是 < target 的或者是起始位置下乙個
while
(lidx <= ridx)
if(lidx > ridx)
else
} lidx ++;}
arrutil.
swap
(arr , l , ridx)
;_quicksort
(arr , l , ridx -1)
;_quicksort
(arr , ridx +
1, r)
;}
堆排序
兩個步驟
對大堆進行調整
void
heapsort
(int
arr)
}// 用大堆實現從小到大排序
for(
int i = arr.length -
1; i >
1; i --
)else
if(rchildidx ==0)
else
arrutil.
swap
(arr , newparentidx , parent)
; parent = newparentidx;}}
}
計數排序 思想 常見排序演算法 選擇排序演算法
原理 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...
常見排序演算法 shell排序
shell排序是對插入排序的乙個改裝,它每次排序把序列的元素按照某個增量分成幾個子串行,對這幾個子串行進行插入排序,然後不斷的縮小增量擴大每個子串行的元素數量,直到增量為一的時候子串行就和原先的待排列序列一樣了,此時只需要做少量的比較和移動就可以完成對序列的排序了。1 2 default to so...