插入排序
public class InsertSort {
public static void main(String[] args) {
int[] num = {57, 48, 78, 15, 2, 36};
for (int i = 1; i < num.length; i++) { //从第二个数据开始和第一个数据进行比较
//进行比较的数据
int n = num[i];
int j;
for (j = i - 1; j >= 0; j--) { //与要进行比较的数据,之前的所有元素进行比较
//比较
if (n < num[j]) { //如果比较数据小
num[j + 1] = num[j]; //就把被比较的数据往后移动一位,数据在j位,后移到j+1位
} else {
break; //当比前一位数据大时,表示比前一位之前的数据都大,结束循环。
//每次循环都把当前循环里的最小值放在前面。
}
}
//插入的位置
num[j + 1] = n; //因为每次比较都是和前一位比较(j),
//所以结束循环时的下标指示的是前一位数据(j),最后就把当年进行比较的数据,插入到j+1的位置
}
}
}
选择排序
第一轮: 最小的索引位置: 4
57, 48, 78, 15, 2, 36 --> 1
57, 48, 78, 15, 2, 36 --> 1
57, 48, 78, 15, 2, 36 --> 3
57, 48, 78, 15, 2, 36 --> 4
57, 48, 78, 15, 2, 36 --> 4将索引4和索引0互换:2, 48, 78, 15, 57, 36
第二轮: 最小索引位置:3
2,48, 78, 15, 57, 36 --> 1
2,48, 78, 15, 57, 36 --> 3
2,48, 78, 15, 57, 36 --> 3将索引3和索引1互换:2,15, 78, 48, 57, 36
第三轮: 最小索引位置:5
2,15, 78, 48, 57, 36 --> 3
2,15, 78, 48, 57, 36 --> 3
2,15, 78, 48, 57, 36 --> 5将索引5和索引2互换:2,15, 36 ,48, 57, 78
public class SelectSort {
public static void main(String[] args) {
int[] num = {57, 48, 78, 15, 2, 36};
/*
第一轮: 最小的索引位置: 4
57, 48, 78, 15, 2, 36 --> 1
57, 48, 78, 15, 2, 36 --> 1
57, 48, 78, 15, 2, 36 --> 3
57, 48, 78, 15, 2, 36 --> 4
57, 48, 78, 15, 2, 36 --> 4
将索引4和索引0互换:2, 48, 78, 15, 57, 36
第二轮: 最小索引位置:3
2,48, 78, 15, 57, 36 --> 1
2,48, 78, 15, 57, 36 --> 3
2,48, 78, 15, 57, 36 --> 3
将索引3和索引1互换:2,15, 78, 48, 57, 36
第三轮: 最小索引位置:5
2,15, 78, 48, 57, 36 --> 3
2,15, 78, 48, 57, 36 --> 3
2,15, 78, 48, 57, 36 --> 5
将索引5和索引2互换:2,15, 36 ,48, 57, 78
*/
for (int i = 0; i < num.length; i++) { //从第一个数据开始循环
//假设最小索引位置
int minIndex = i;
//比较
for (int j = i; j < num.length; j++) { //从最小值索引的位置开始比较
if (num[j] < num[minIndex]) { //如果有值比假设的最小值小
//切换最小值对应的索引位置
minIndex = j; //切换后再向后比较
}
}
//按照位置和最小索引来互换
int temp = num[minIndex];
num[minIndex] = num[i];
num[i] = temp;
}
//第一次循环,把最小值放在第一个;
//第二次循环,从第二个数据开始向后比较,找到最小值放在第二个位置。以此类推
System.out.println(Arrays.toString(num));
}
}