您现在的位置是:首页 > 后台技术 > 数据结构与算法数据结构与算法
快速排序法(图文)
第十三双眼睛2022-06-21【数据结构与算法】人已围观
简介快速排序法
快速排序法的思路:
package com.xingchen.day006; import java.util.Arrays; public class QuickSort { public static void main(String[] args) { int[] arr = {-9,78,0,23,-567,70}; quickSort(arr,0, arr.length - 1); System.out.println(Arrays.toString(arr)); } public static void quickSort(int[] arr,int left,int right) { int l = left; //左边得下标 int r = right; // 右边得下标 int pivot = arr[(left + right)/2]; int temp = 0;// 临时变量,交换时使用 // 让比中间值大的数字放到右边,小的值放到左边 while (l < r) { // 从左边找比中间值大的数 while (arr[l] < pivot) { l += 1; } // 从右边找比中间值小的数字 while (arr[r] > pivot) { r -= 1; } // 如果l >= r说明中间值左边的数字全部小于中间值,右边的值全部大于等于中间值 if (l >= r) { break; } // 交换 temp = arr[l]; arr[l] = arr[r]; arr[r] = temp; // 如果交换完后发现 arr[l] 等于povit 前移 if (arr[l] == pivot) { r --; } if (arr[r] == pivot) { l ++; } } // 如果l = r,需要让l ++ r -- 否则会栈溢出 if (l ==r) { l += 1; r -= 1; } // 向左递归 if (left < r) { quickSort(arr, left, r); } // 向右递归 if (right > l) { quickSort(arr, l, right); } } } |
Tags:
很赞哦! ()
相关文章
随机图文
快乐数(图文)
快乐数 编写一个算法来判断一个数 n 是不是快乐数。 快乐数定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 如果这个过程 结果为 1,那么这个数就是快乐数。 如果 n 是 快乐数 就返回 true ;不是,则返回 false 。有效的括号(图文)
有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。存在重复元素 II(图文)
存在重复元素 II 给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。回文数(图文)
回文数 给你一个整数x,如果它是一个回文数,返回true,如果不是,返回false,回文数是指正向和反向都是一样的数