Quick Sort 属于交换排序,是对冒泡算法进行的改造。
基本原理:分治法和填坑法
填坑法
private static int partition(int a[], int i, int j) {
int key = a[i];//key值
while (i < j) {
while (i < j && a[j] > key)// 从右向左小循环
j--;
if (a[j] <= key)//判定填充
a[i] = a[j];
while (i < j && a[i] < key)// 从左向右小循环
i++;
if (a[i] >= key)//判定填充
a[j] = a[i];
}
a[i] = key;// 把轴元素放在轴所在地位置
return i;// 返回轴所在的位置
}
实现递归的quicksort():
private void quickSort(int data[], int low, int high) {// 递归
int q;
if (low < high) {
q = partition(data, low, high);
quickSort(data, q + 1, high);//对q左边进行分类
quickSort(data, low, q - 1);//对q右边进行分类
}
}
对于划分成子问题求解的问题,公式为:
T(n) = a*T(n/b)+f(n)
2025 - 快车库 - 我的知识库 重庆启连科技有限公司 渝ICP备16002641号-10
企客连连 表单助手 企服开发 榜单123