排序算法
hxkovo
这个作者很懒,什么都没留下…
展开
-
快排的模板(熟记!!)
代码如下: //快排切分,返回下标j,使比num[j]小的数都在j的左边,比num[j]大的数都在j的右边 private int partition(int []nums,int l,int r){int v=nums[l];int i=l;int j=r+1;while (true){ //从第二个数开始 第一个数是标志值 while (++i<=r&&nums[i]<v); //从最后一个数开始 while (原创 2021-09-04 16:19:47 · 180 阅读 · 0 评论 -
剑指40 最小的k个数
题目描述:代码如下:class Solution { public int[] getLeastNumbers(int[] arr, int k){if(arr.length==0||k==0){ return new int[]{};}//k-1下标return quickSort(arr,0,arr.length-1,k-1); } private int[] quickSort(int []nums,int l,int r,int k){原创 2021-09-04 16:00:56 · 65 阅读 · 0 评论 -
LC 215 数组中的第k个最大元素
题目描述:代码如下:快排class Solution { public int findKthLargest(int[] nums, int k) {int len=nums.length;int left=0;int right=len-1;int target=len-k;while(true){ int partition=partition(nums,left,right); if(target==partition){ return n原创 2021-07-07 23:10:44 · 73 阅读 · 0 评论 -
快速排序算法
写法一:边移动边交换 public static void quickSort1(int nums[],int left,int right){ if(left>right){ return; } int i=left,j=right; int pivot=nums[left];//基准 while (i<j){ while (i<j&&num原创 2021-07-07 20:51:40 · 87 阅读 · 0 评论