package com.algorithm.quciksort;
/**
* Created by young on 2018/8/24.
*/
public class QuickSort {
public static void main(String[] args) {
int[] nums = new int[10];
int[] nums2 = new int[10];
for (int i = 0; i < 10; i++) {
nums[i] = (int) (Math.random() * 100);
nums2[i] = (int) (Math.random() * 100);
}
quickSort(nums, 0, nums.length - 1);
quickSort2(nums2, 0, nums2.length - 1);
for (int i = 0; i < 10; i++) {
System.out.print(nums[i] + " ");
}
System.out.println();
for (int i = 0; i < 10; i++) {
System.out.print(nums2[i] + " ");
}
}
public static int quickSort(int[] nums, int low, int high) {
if (low < high) {
int mid = partition(nums, low, high);
quickSort(nums, low, mid - 1);
quickSort(nums, mid + 1, high);
}
return low;
}
public static int partition(int[] nums, int low, int high) {
int pivot = nums[low];
while (low < high) {
while (low < high && nums[high] >= pivot) high--;
nums[low] = nums[high];
while (low < high && nums[low] <= pivot) low++;
nums[high] = nums[low];
}
nums[low] = pivot;
return low;
}
public static int partition2(int[] nums, int low, int high) {
int start = low;
for (int i = high; i > low; i--) {
if (nums[i] >= nums[start]) {
swap(nums, high--, i);
}
}
swap(nums,start,high);
return high;
}
public static int quickSort2(int[] nums, int low, int high) {
if (low < high) {
int mid = partition2(nums, low, high);
quickSort2(nums, low, mid - 1);
quickSort2(nums, mid + 1, high);
}
return low;
}
public static void swap(int[] nums, int a, int b) {
int tmp = nums[a];
nums[a] = nums[b];
nums[b] = tmp;
}
}
随机运行结果:
8 44 46 48 59 64 75 76 79 81
4 16 19 35 60 78 78 86 91 96
快排的2种方法(仅代码演示)
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...