import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Integer[] ints = {10, 9, 4, 5, 6, 7, 8, 3, 2, 1};
sortArray(ints);
System.out.println(Arrays.toString(ints));
}
/* //堆排序
private static void sortArray(Integer[] ints) {
//从下到上先调整为大根堆
for (int i = ints.length / 2 - 1; i >= 0; i--) {
adjustHeap(ints, i, ints.length);
}
//循环进行输出--输出之后进行调整
for (int j = ints.length - 1; j > 0; j--) {
swap(ints, 0, j);
adjustHeap(ints, 0, j);
}
}*/
/*
private static void adjustHeap(Integer[] ints, int i, int length) {
Integer temp = ints[i];
for (int k = 2 * i + 1; k < length; k = 2 * k + 1) {
//2*k+1是k的第一个子节点
//用子节点中最大值进行交换
if (k + 1 < length && ints[k] < ints[k + 1]) {
k++;
}
if (temp < ints[k]) {
ints[i] = ints[k];
i = k;
} else {
break;
}
}
ints[i] = temp;
}*/
//数组中元素进行交换,地址传递/值传递
/* private static void swap(Integer[] ints, int i, int j) {
Integer temp = ints[i];
ints[i] = ints[j];
ints[j] = temp;
}*/
//调整堆的算法
//快排
// 需要随机寻址特性
/* private static void sortArray(Integer[] ints) {
quickSort(ints, 0, ints.length - 1);
}
private static void quickSort(Integer[] ints, int start, int end) {
int i = start, j = end;
int mid = ints[i];
while (i < j) {
while (i < j && ints[j] > mid) j--;
if (i < j) {
Integer temp = ints[j];
ints[j] = ints[i];
ints[i] = temp;
}
while (i < j && ints[i] <= mid) i++;
if (i < j) {
Integer temp = ints[i];
ints[i] = ints[j];
ints[j] = temp;
}
}
if (i - 1 > start) {
quickSort(ints, start, i - 1);
}
if (j + 1 < end) {
quickSort(ints, j + 1, end);
}
}*/
//冒泡排序
/* private static void sortArray(Integer[] ints) {
for (int i=0;i<ints.length-1;i++){
for (int j=1;j<=ints.length-i-1;j++){
if (ints[j-1]>ints[j]){
int temp = ints[j];
ints[j] = ints[j-1];
ints[j-1] = temp;
}
}
}
}*/
//1.插入排序
/*private static void sortArray(Integer[] ints) {
for(int i=1;i<ints.length;i++){
Integer temp = ints[i];
int j=i-1;
while (j>=0&&ints[j]>temp){
ints[j+1]=ints[j];
j--;
}
ints[j+1] = temp;
}
}*/
//2.选择排序
/* public static void sortArray(Integer[] ints){
for (int i=0;i<ints.length-1;i++){
Integer temp = ints[i];
int min=i;
for (int j=i+1;j<ints.length;j++){
if (temp>ints[j]) {
temp = ints[j];
min = j;
}
}
temp = ints[min];
ints[min] = ints[i];
ints[i] = temp;
}
}*/