直接用ip访问网站要备案吗,做网站国外网站,wordpress404页面更爱,在工商局网站做年报要交费吗干完工作的时候突然想起来快速排序我一直没学#xff0c;就去看了一下别人写的博客#xff0c;用的就是二分查找的思想#xff0c;而且感觉挺像插入排序的。
插入排序是寻找最大#xff0c;小值#xff0c;而快排是确定一个数的左右区域。
package com.qx;import java.u…干完工作的时候突然想起来快速排序我一直没学就去看了一下别人写的博客用的就是二分查找的思想而且感觉挺像插入排序的。
插入排序是寻找最大小值而快排是确定一个数的左右区域。
package com.qx;import java.util.Arrays;/*** program: springBoot* author: quxiao* create: 2023-12-13 11:03**/
public class t1 {public static void main(String[] args) {int[] ints {9, 1, 5, 2, 7, 4, 123, 4, 2, 3, 6, 7, 8, 4, 2, 34, 23, 1113, 432, 11, 2, 3, 9};}private static void fastSort(int[] arr) {//确定快排的思想用升序作为例子//1、在需要排序的数中选择一个 t 作为参照我们要达到的效果是t的左边小于他t的右边大于它。这样就算排序好一个数。//2、需要用一个双指针【 l下标对应的数(arr[l])和t判断,约定小于或等于t 】【r下标对应的数(arr[r])和t判断,约定大于或等于t】//3、一旦l(arr[l])或者rarr[r]不满足对应的移动就停止//4、参照数的归位首先得确认查找数是应该在哪里如果取的是arr[l],那就和l交换如果取的是arr[r]那就和r交换。dfs(arr, 0, arr.length - 1);System.out.println(Arrays.toString(arr));}/*** param arr 待排序数组* param l 开始* param r 结束*/private static void dfs(int[] arr, int l, int r) {if (l r) {return;}int tl, tr, t;t arr[l];//之所以要存起来最初的开始、结束位置。是为了确定下一次的开始结束位置。tl l;tr r;while (l r) {while (arr[r] t l r) {r--;}while (arr[l] t l r) {l;}if (l r) {int p arr[r];arr[r] arr[l];arr[l] p;}}arr[tl] arr[l];arr[l] t;//参照数的左边dfs(arr, tl, l - 1);//参照数的右边dfs(arr, l 1, tr);}}