冒泡排序
一次比较两个元素,如果他们的顺序错误就把他们交换过来
/**
* 冒泡排序
*/
@Test
public void bubbleSort() {
int[] array = {3, 5, 2, 1, 6, 8};
int temp;//交换时记录中间值
for (int i = 1; i < array.length; i++) {
for (int j = 0; j < array.length - i; j++) {
if (array[j] > array[j + 1]) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + ",");
}
}
插入排序
取无序的区间数值去插入到有序区间比较,从右向左,遇到比自己大的就继续往前,遇到比自己小的就落座并加入有序区间。
/**
* 插入排序
*/
@Test
public void insetSort() {
int[] array = {3, 5, 2, 1, 6, 8};
//默认3为有序区间 5,2,1,6,8为无序区间
int temp;//记录插入的数据
for (int i = 1; i < array.length; i++) {
temp = array[i];
int k;//比待插入数据小的值的索引,即待插入数据需插入的位置前一位
for (k = i - 1; k >= 0; k--) {//从有序区间的右边向左插入
if (array[k] > temp) {
array[k + 1] = array[k];
} else {
break;
}
}
array[k + 1] = temp;
}
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + ",");
}
}
简单选择排序
简单选择排序是从左到右依次选择出最小的值
/**
* 简单选择排序
*/
@Test
public void selectSort() {
int[] array = {3, 5, 2, 1, 6, 8};
for (int i = 0; i < array.length; i++) {
int temp = array[i];//默人每一轮的初始最小值
int j = i;//记录每一轮的最小值索引
for (int k = i + 1; k < array.length; k++) {
if (array[k] < temp) {
temp = array[k];
j = k;
}
}
if (j != i) {//初始最小值非最小值
array[j] = array[i];//最小值和初始最小值换位
array[i] = temp;
}
}
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + ",");
}
}