百度网络营销的概念和含义,合肥网站seo推广,wordpress底部加友链,学校网站建设整改报告文章目录 1 排序原理2 代码实现 1 排序原理
quickSort(int[] arr, int left, int right) 参数描述
arr: 待排序的数组left: 排序的左边位置right: 排序的右边位置
排序步骤:
先选取左边节点的数据作为 pivot从右边开始, 向左遍历节点数据, 在满足right left 条件前提下… 文章目录 1 排序原理2 代码实现 1 排序原理
quickSort(int[] arr, int left, int right) 参数描述
arr: 待排序的数组left: 排序的左边位置right: 排序的右边位置
排序步骤:
先选取左边节点的数据作为 pivot从右边开始, 向左遍历节点数据, 在满足right left 条件前提下: 如果节点数据 pivot 继续向左移动 如果节点数据 pivot 则把当前节点的数据赋值到 left 节点, 然后停止右边遍历, 开始左边遍历 从左边开始, 向右遍历节点数据, 在满足left right 条件前提下: 如果节点数据 pivot 继续向右移动 如果节点数据 pivot 则把当前节点的数据赋值到 right 节点, 然后停止左边遍历, 开始右边遍历 当 left 和 right 重合后, 此次遍历结束, 把 pivot 赋值到重合节点, pivot节点左边为左数组, 右边的为右数组 对左数组递归调用执行 1,2,3 步骤 对右数组递归调用执行 1,2,3 步骤 完成快速排序
2 代码实现
public static void main(String[] args) { int[] arr {5, 3, 8, 5, 4, 2}; quickSort(arr, 0, arr.length - 1); System.out.println(排序后的数组: Arrays.toString(arr));
} public static void quickSort(int[] arr, int left, int right) { if (left right) { return; } // 选取最左边的元素作为枢轴 int pivot arr[left]; int i left; int j right; while (i j) { // 先从右边开始找小于枢轴的元素 while (i j arr[j] pivot) { // 如果没有找到, 就继续往左边找 j--; } // 在右边找到小于枢轴的元素后, 将其赋值给左边位置的元素 arr[i] arr[j]; // 然后从左边开始找大于枢轴的元素 while (i j arr[i] pivot) { // 如果没有找到, 就继续往右边找 i; } // 在左边找到大于枢轴的元素后, 将其赋值给右边位置的元素 arr[j] arr[i]; } // 当 left right 时, 把 pivot 赋值给 arr[i] arr[i] pivot; // 递归调用 // 对 pivot 位置左边进行快速排序 quickSort(arr, left, i - 1); // 对 pivot 位置右边进行快速排序 quickSort(arr, i 1, right);
}