package com.alipay.cloud.aks.biz.openapi.impl;
import java.util.List;
import com.google.common.collect.Lists;
public class Test {
public static void main(String[] args) {
List<Integer> list = Lists.newArrayList(4, 2, 1, 6, 5, 7, 2, 3);
if (list == null || list.size() < 2) {
System.out.println(list);
}
test(list, 0, list.size() - 1);
System.out.println(list);
}
private static void test(List<Integer> list, int start, int end) {
if (start > end) {
return;
}
int sentinel = list.get(start);
int j = end;
int i = start;
while (i < j) {
if (list.get(j) < sentinel) {
for (; i < j; i++) {
if (list.get(i) > sentinel) {
int tem = list.get(i);
list.set(i, list.get(j));
list.set(j, tem);
j--;
break;
}
}
} else {
j--;
}
}
if (sentinel > list.get(j)) {
list.set(start, list.get(j));
list.set(j, sentinel);
}
test(list, start, j - 1);
test(list, j + 1, end);
}
}
package com.alipay.cloud.aks.biz.openapi.impl;
import java.util.List;
import java.util.PriorityQueue;
import java.util.Queue;
import com.google.common.collect.Lists;
public class Test {
public static void main(String[] args) {
List<Integer> list = Lists.newArrayList(4, 2, 1, 6, 5, 7, 2, 3);
if (list == null || list.size() < 2) {
System.out.println(list);
}
quickSort(list, 0, list.size() - 1);
System.out.println(list);
}
private static void priorityQTest() {
Queue<Integer> q = new PriorityQueue<>((o1, o2) -> o2 - o1);
q.add(2);
q.add(1);
q.add(3);
System.out.println(q.poll());
System.out.println(q.poll());
System.out.println(q.poll());
}
private static void quickSort(List<Integer> list, int start, int end) {
if(start >= end) {
return;
}
int sentinel = list.get(start);
int l = start + 1;
int r = end;
while (l < r) {
if(list.get(r) >= sentinel) {
r --;
continue;
}
while (l < r) {
if(list.get(l) <= sentinel) {
l ++;
continue;
}
int tmp = list.get(r);
list.set(r, list.get(l));
list.set(l, tmp);
r--;
break;
}
}
if(list.get(r) < sentinel) {
list.set(start, list.get(r));
list.set(r, sentinel);
}
quickSort(list, start, r -1);
quickSort(list, r + 1, end);
}
static void insertSourt() {
int[] m = new int[] {5, 3, 2, 1, 6};
for (int i = 1; i < m.length; i++) {
int tmp = m[i];
int j = i - 1;
for (; j >= 0; j--) {
if (m[j] > tmp) {
m[j + 1] = m[j];
} else {
break;
}
}
m[j + 1] = tmp;
}
for (int i : m) {
System.out.println(i);
}
}
static void bubbleSort() {
int[] m = new int[] {5, 3, 2, 1, 6};
for (int i = m.length - 1; i > 0; i--) {
for (int j = 0; j < i; j++) {
if (m[j] > m[j + 1]) {
int tmp = m[j + 1];
m[j + 1] = m[j];
m[j] = tmp;
}
}
}
for (int i : m) {
System.out.println(i);
}
}
}