快速排序代码:
static void quicksort(int n[], int left, int right) {
int dp;
if (left < right) {
dp = partition(n, left, right);
quicksort(n, left, dp - 1);
quicksort(n, dp + 1, right);
}
}
static int partition(int n[], int left, int right) {
int pivot = n[left];
while (left < right) {
while (left < right && n[right] >= pivot)
right--;
if (left < right)
n[left++] = n[right];
while (left < right && n[left] <= pivot)
left++;
if (left < right)
n[right--] = n[left];
}
n[left] = pivot;
return left;
}
——————————————————————————————————————————————
class Solution {
static void quicksort(int n[], int left, int right) {
int dp;
if (left < right) {
dp = partition(n, left, right);
quicksort(n, left, dp - 1);
quicksort(n, dp + 1, right);
}
}
static int partition(int n[], int left, int right) {
int pivot = n[left];
while (left < right) {
while (left < right && n[right] >= pivot)
right--;
if (left < right)
n[left++] = n[right];
while (left < right && n[left] <= pivot)
left++;
if (left < right)
n[right--] = n[left];
}
n[left] = pivot;
return left;
}
public static int[] relativeSortArray(int[] arr1, int[] arr2) {
int n=0;
for (int value : arr2) {
for (int j = n; j < arr1.length; j++) {
if (arr1[j] == value) {
int swap = arr1[j];
arr1[j] = arr1[n];
arr1[n] = swap;
n++;
}
}
}
quicksort(arr1, n, arr1.length-1);
return arr1;
}
}
public class Main {
public static void main(String[] args) {
int[] arr1 = {2,3,1,3,2,4,6,7,9,2,19}, arr2 = {2,1,4,3,9,6};
Solution.relativeSortArray(arr1, arr2);
for(int i:arr1) System.out.println(i);
}
}