1 插入排序
插入排序动态图
插入排序从第二个数开始,拿出第二个数进行向前插入排序,一直到最后一个数向前做插入排序
代码如下:
/**
* 插入排序
* 插入排序是从第二个元素往前面的元素比较
*/
public class InsertSort {
public static void main(String[] args) {
int[] arr = {5,2,63,1,632,67,45,6,32};
//插入排序是从第二个元素往前面的元素比较,所以大的循环索引从 1 开始
for (int i =1 ; i<arr.length ; i++){
//小循环内后面的数依次和前面的数比较,所以是 j=i
for (int j=i ; j>0 ; j--){
//如果当前元素比前一个元素小,就交换位置
if (arr[j] < arr[j-1]){
//交换位置
int temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
}
}
}
//通过增强for循环输入排序后的数组
for (int i : arr) {
System.out.print(i+" ");
}
}
}
2 选择排序
选择排序是将第一个元素假设为最小的数据,依次和后面的比较。
代码如下:
/**
* 选择排序
* 假设第一个索引的位置值是最小的,后面的元素与其比较排序
*/
public class SelectionSort {
public static void main(String[] args) {
int[] arr = {5,2,63,1,632,67,45,6,32};
//要循环遍历比较的次数
for (int i =0 ; i<arr.length ; i++){
//假设设置最小数索引为i , 因为第一次比较后最小的数就排好了
int minIndex = i;
// i+1:因为第一个元素不需要比较是其本身
for (int j=i+1 ; j<arr.length ; j++){
//比较判断 假设的最小值和当前元素比
if (arr[j] < arr[minIndex]){
//如果当前的元素小于假设的最小元素,就交换索引位置
minIndex = j;
}
}
//交换元素位置
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
//使用增强for循环打印出 排序好的数组元素
for (int i : arr) {
System.out.print(i+" ");
}
}
}
最后,如果有问题,希望指正,一起进步。