中值法快速排序

it2025-05-28  8

public static void quickSort(int left,int right,int nums[]){ if(left>=right){ return; } int i=left,j=right-1; int key=del(left,right,nums); while(i<j){ while(i<j&&nums[i]<=nums[key]){ i++; } while(i<j&&nums[j]>=nums[key]){ j--; } if(i<j){ swap(i,j,nums); } } if(i<right-1){ swap(i,right-1,nums); } quickSort(left,i-1,nums); quickSort(i+1,right,nums); } public static void swap(int i,int j,int nums[]){ int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; } public static int del(int left,int right,int nums[]){ int mid=(right+left)/2; if(nums[left]>nums[right]){ swap(left,right,nums); } if(nums[left]>nums[mid]){ swap(left,mid,nums); } if(nums[mid]>nums[right]){ swap(mid,right,nums); } swap(mid,right-1,nums); return right-1; }
最新回复(0)