快速排序
蛋卷在月球烤面包
这个作者很懒,什么都没留下…
展开
-
力扣349 两个数组的交集
方法一:哈希表+遍历 public int[] intersection(int[] nums1, int[] nums2) { HashMap<Integer,Boolean> map=new HashMap<>(); List<Integer> res=new ArrayList<>(); for(int i=0;i<nums1.length;i++){ map.pu原创 2022-04-28 17:02:34 · 179 阅读 · 0 评论 -
剑指offer21 调整数组顺序使奇数位于偶数前面
public int[] exchange(int[] nums){ int left=0; int right=nums.length-1; while(left<right){ while(left<right&&nums[right]%2==0) right--; while(left<right&&nums[left]%2==1) left++; .原创 2022-03-06 17:23:29 · 184 阅读 · 0 评论 -
力扣215 数组中的第K个最大元素
思路:求第K个最大元素,就是把递增数组分成两部分,求后一部分的最小值。 求后一部分的最小值,可以用小顶堆存放后一部分的值,最后求堆顶直接求得。 先把数组中先k个值放入堆中,堆内会自动排序,此时堆顶为当前堆中k个值里的最小值。然后依次遍历剩下的元素,和堆顶元素比较大小,如果剩的元素比堆顶大,说明当前堆顶不在最大的k个数里,把堆顶的值去掉,将剩的元素放入堆中,堆内自动排序,直到遍历数组结束。 public int findKthLargest(int[] nums, int k){ Pr原创 2022-03-02 12:07:31 · 236 阅读 · 0 评论 -
力扣75 颜色分类
public void sortColors(int[] nums){ if(nums==null||nums.length==0) return; int zero=0; int two=nums.length; int i=0; while(i<two){ if(nums[i]==0){ swap(nums,i,zero); ...原创 2022-03-01 21:22:02 · 122 阅读 · 0 评论 -
剑指offer40 最小的k个数
public int[] getLeastNumbers(int[] arr, int k){ quickSort(arr,0,arr.length-1); return Arrays.copyOf(arr,k); } public void quickSort(int[] arr,int left,int right){ if(left>=right) return; int low=left; in.原创 2022-03-01 14:00:33 · 78 阅读 · 0 评论 -
快速排序总结
引用《大话数据结构》中的代码: public class QuickSort { public static void main(String[] args) { int[] array={50,10,90,30,70,40,80,60,20}; quickSort(array,0,array.length-1); System.out.println("quick sort:"); for(int num:arra..原创 2022-02-28 21:17:54 · 203 阅读 · 0 评论