public class Sort {
@Test
public void test() {
// PopSort(new int[]{2, 3, 1, 4, 6, 5});
// InsertSort(new int[]{2, 3, 1, 4, 6, 5},6);
selectionSort(new int[]{2, 3, 1, 4, 6, 5});
}
public void PopSort(int[] array) {
int length = array.length;
for (int i = 0; i < length; i++) {
for (int j = i + 1; j < length; j++) {
if (array[i] > array[j]) {
swap(array, i, j);
}
}
}
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
public void swap(int[] array, int i, int j) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
/**
* 思路:
* 發現後面的元素大於前面的,就將其插入到合適的位置,其餘元素順序後移
*
* @param array
* @param length
*/
public void InsertSort(int[] array, int length) {
for (int i = 1; i < length; i++) {
int value = array[i];
int j = i - 1;
for (; j >= 0; j--) {
if (array[j] > value) {
array[j + 1] = array[j];
} else {
break;
}
}
array[j + 1] = value;
}
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
/**
* 思路:
* 從未排序的集合中,找出最小的, 放在已排序的集合末尾
*
* @param array
*/
public void selectionSort(int[] array) {
for (int i = 0; i < array.length - 1; i++) {
int min = array[i];
int minIndex = i;
int j = i + 1;
for (; j < array.length; j++) {
if (array[j] < min) {
min = array[j];
minIndex = j;
}
}
swap(array, i, minIndex);
}
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
}