
1.起泡排序(冒泡排序)

/**
* 起泡排序
* @param r
* @param low
* @param high
*/
public void bubbleSort(Object[] r,int low,int high) {
int n = high-low+1;
for(int i=1; i<n; i++){
for(int j=low; j<=high-i; j++){
if(strategy.compare(r[j], r[j+1]) >0 ){
Object temp = r[j];
r[j] = r[j+1];
r[j+1] = temp;
}
}
}
}
2.快速排序

/**
* 实现一次划分的过程
* 数组元素数组r,划分序列区间[low,high]
* @param r
* @param low
* @param high
* @return 将序列划分为两个子序列并返回枢轴元素的位置
*/
private int partition(Object[] r, int low, int high) {
Object pivot = r[low];
while(low < high){
while(low < high && strategy.compare(r[high], pivot) >= 0){
high--;
}
r[low] = r[high];
while(low < high && strategy.compare(r[low], pivot) <= 0){
low++;
}
r[high] = r[low];
}
r[low] = pivot;
return low;
}

/**
* 快速排序
* @param r
* @param low
* @param high
*/
public void quickSort(Object[] r, int low, int high) {
if(low < high){
int pa = partition(r, low, high);
quickSort(r, low, pa-1);
quickSort(r, pa+1, high);
}
}