package com.Akmf.sort.HeapSort
public class QuickSortDemo {
public static int[] sortArray(int[] nums){
quickSort(nums, 0, nums.length - 1)
return nums
}
private static void quickSort(int[] nums, int left,
int right) {
if(left >= right) return
int index = partition(nums, left, right)
quickSort(nums, left, index - 1)
quickSort(nums, index + 1, right)
}
public static int partition(int[] nums, int left, int right){
int base = nums[left]
int i = left , j = right
int tmp
while(i < j){
while(nums[j] >= base && i < j){
j--
}
while(nums[i] <= base && i < j){
i++
}
if(i < j){
tmp = nums[i]
nums[i] = nums[j]
nums[j] = tmp
}
}
nums[left] = nums[i]
nums[i] = base
return i
}
public static void main(String[] args) {
int[] nums = {5,2,3,6,1,7}
int[] arr = sortArray(nums)
for (int i = 0
System.out.println(arr[i])
}
}
}
private static void quickSort2(int[] nums, int left,
int right) {
if(left >= right) return;
int base = nums[left];
int i = left , j = right;
while(i < j){
while(nums[j] >= base && i < j){
j--;
}
while(nums[i] <= base && i < j){
i++;
}
if ( i < j) {
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
}
}
nums[left] = nums[i];
nums[i] = base;
quickSort2(nums, left, i - 1);
quickSort2(nums, i + 1, right);
}