//氣泡排序
public void bubbleSort(int[] arr) {
int len = arr.length;
for(int i=0;i<len-1;i++) {
for(int j=1;j<len-i;j++) {
if(arr[j-1]>arr[j]) {
swap(arr,j-1,j);
}
}
}
}
//選擇排序
public void selectSort(int[] arr) {
int len = arr.length;
for(int i=0; i<len-1; i++) {
int curmax = arr[0];
int loc = 0;
for(int j=0; j<len-i; j++) {
if(arr[j]>curmax) {
curmax = arr[j];
loc = j;
}
}
swap(arr,loc,len-i-1);
}
}
//快速排序
public void quickSort(int[] arr,int s,int e) {
if(e<=s) return;
int p = partition(arr,s,e);
swap(arr,p,s);
quickSort(arr,s,p-1);
quickSort(arr,p+1,e);
}
public int partition(int[] arr,int s,int e) {
int temp = arr[s];
int s1=s,e1=e+1;
while(true) {
while(arr[--e1]>temp);
while(s1<e && arr[++s1]<temp);
if(s1<e1) {
swap(arr,s1,e1);
}else {
return e1;
}
}
}
//歸併排序
//插入排序
public void insertSort(int[] arr) {
int len = arr.length;
int temp;
for(int i=1; i<len; i++) {
temp = arr[i];
int loc = i; //loc代表當前正在比對的元素的位置
for(int j=i-1; j>=0; j--) {
if(temp<arr[j]) {
arr[loc] = arr[j];
loc = j;
}
}
arr[loc] = temp;
}
}
//希爾排序
//堆排序
public void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}