import java.util.Scanner;
public class quickSort {
public static void main(String[] args) {
int[] nums = new int[]{6,4,32,5,6,7,8,89,0,1};
quickSort(nums);
for(int x : nums){
System.out.print(x + ",");
}
}
public static void quickSort(int[] nums){
int i = 0;
int j = nums.length - 1;
quickSor(nums,i,j);
}
public static void quickSor(int[] nums,int low,int high){
int start = low;
int end = high;
int keyNum = nums[low];
while(start < end){
while(start < end && nums[end] >= keyNum) end--;
if(nums[end] <= keyNum) {
swap(nums,start,end);
}
while(start < end && nums[start] <= keyNum) start++;
if(nums[start ] >= keyNum) {
swap(nums,start,end);
}
}
if(start > low) quickSor(nums,low,start - 1);
if(end < high) quickSor(nums,end+1,high);
// for(int x : nums){
// System.out.print(x + ",");
// }
}
//
private static void swap(int[] nums,int start,int end){
int temp = nums[start];
nums[start] = nums[end];
nums[end] = temp;
}
}
public class heapSort {
public static void main(String[] args){
int[] arr = {2,3,3,5,6,7,8,1,9};
buildHeap(arr,arr.length - 1);
heapSort(arr,arr.length - 1);
for(int x : arr) {
System.out.print(x+" ");
}
}
private static void heapify(int[] arr, int n ,int i){
int c1 = 2 * i + 1;
int c2 = 2 * i + 2;
int max = i;
if(c1 < n && arr[c1] > arr[max] ) max = c1;
if(c2 < n && arr[c2] > arr[max]) max = c2;
if(max != i) {
swap(arr,max,i);
heapify(arr,n,max);
}
}
//建堆
private static void buildHeap(int[] arr,int n){
int l = n - 1;
int parent = (l -1)/2;
for(int i = parent ; i >= 0;i--){
heapify(arr,n,i);
}
}
private static void heapSort(int[] arr,int n){
for(int i = n - 1; i >= 0 ; i--){
swap(arr,0,i);
heapify(arr,i,0);
}
}
private static void swap(int[] arr,int i,int j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}