手写代码模块(Java实现)——排序
代码呈现为函数封装形式, 接口统一为数组int [] array
1.冒泡排序
public static void BubbleSort(int [] a){
int i, j;
int n = a.length;
for(i=0; i<n; i++){
for(j=1; j<n-i; j++){
if(a[j-1] > a[j]){
int temp;
temp = a[j-1];
a[j-1] = a[j];
a[j]=temp;
}
}
}
}
2.快速排序
public static void sort(int a[], int low, int hight) {
int i, j, index;
if (low > hight) {
return;
}
i = low;
j = hight;
index = a[i];
while (i < j) {
while (i < j && a[j] >= index)
j--;
if (i < j)
a[i++] = a[j];
while (i < j && a[i] < index)
i++;
if (i < j)
a[j--] = a[i];
}
a[i] = index;
sort(a, low, i - 1);
sort(a, i + 1, hight);
}
public static void QuickSort(int a[]) {
sort(a, 0, a.length - 1);
}
3.堆排序
/**
* 构建大顶堆作为例子
*/
public static void adjustHeap(int[] a, int i, int len) {
int temp, j;
temp = a[i];
for (j = 2*i+1; j < len; j = 2*j+1) {
if (j < len && a[j] < a[j + 1])
++j;
if (temp >= a[j])
break;
a[i] = a[j];
i = j;
}
a[i] = temp;
}
public static void heapSort(int[] a) {
int i;
for (i = a.length / 2 - 1; i >= 0; i--) {
adjustHeap(a, i, a.length - 1);
}
for (i = a.length - 1; i >= 0; i--) {
int temp = a[0];
a[0] = a[i];
a[i] = temp;
adjustHeap(a, 0, i - 1);
}
}