1.选择排序
package 选择排序;
import java.util.Arrays;
public class xuanzepaixu {
public static void selectSort(int[] array){
for (int i = 0; i < array.length-1; i++) {
for (int j = i+1; j < array.length; j++) {
if (array[i]>array[j]){
int tmp=array[i];
array[i]=array[j];
array[j]=tmp;
}
}
}
}
public static void main(String[] args) {
int[] array = {8, 4, 7, 9, 3};
selectSort(array);
System.out.println(Arrays.toString(array));
}
}
2.堆排序
- 建堆,从小到大建大堆,然后把最大的放在最后,长度减一,剩下的继续,这样下来就是从小到大
- 从大到小反着来就行
package 选择排序;
import java.util.Arrays;
public class heapSOrt {
public static void adjustHeap(int[] array,int parent,int len){
int child = parent * 2 + 1;
while (child < len) {
if (child + 1 < len && array[child] < array[child + 1]) {
child++;
}
if (array[child] > array[parent]) {
int tmp = array[child];
array[child] = array[parent];
array[parent] = tmp;
parent = child;
child = 1 * parent + 1;
} else {
break;
}
}
}
public static void createHeap(int[] array) {
for (int p = (array.length - 1 - 1) / 2; p >= 0; p--) {
adjustHeap(array, p, array.length);
}
}
public static void heapsort(int[] array){
createHeap(array);
int end = array.length - 1;
while (end > 0) {
int tmp = array[0];
array[0] = array[end];
array[end] = tmp;
adjustHeap(array, 0, end);
end--;
}
}
public static void main(String[] args) {
int[] array = {8, 4, 7, 9, 3};
heapsort(array);
System.out.println(Arrays.toString(array));
}
}