1.快速排序算法
快速排序算法的原理是:假设要排序的数组是A[1]……A[N],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一躺快速排序,然后递归该算法,就可以将数组快速排序,常用实现方法是这样的:
private int[] bArray = new int[]{50,72,36,9,18,29,31,61,519,11};
int [] result = quickSort(bArray,0,bArray.length-1);
private int[] quickSort(int[] array,int i,int j){
// 左端小于右端时进行排序操作
if(i < j){
// 以数组第一个值为标准值
int key = array[i];
int low = i;
int high = j;
// 当low小于high时开始循环
while(low < high){
//循环找到array[high] > key,没有则指针左移
while(low < high && array[high] > key){
high--;
}
// 可能已经结束,避免死循环,将小于标准值的右端的数放到左端
if(low < high)
array[low++] = array[high];
//循环找到array[low] < key,没有则指针右移
while(low < high && array[low] < key){
low++;
}
// 可能已经结束,避免死循环,将大于标准值的右端的数放到右端
if(low < high)
array[high--] = array[low];
}
// 当左右端的循环结束,循环结束的位置即是key的位置
array[low] = key;
// 递归排序此次标准值左端的数据
quickSort(array,i,low-1);
// 递归排序此次标准值右端的数据
quickSort(array,low+1,j);
}
return array;
}
2.堆排序
堆排序算法的原理是:1.将初始数组R[]构造成大顶堆