一,插入排序
1,简介:
选择排序: 在需要排序的数组中,按照元素插入的方式寻该元素的适当位置,以达到排序的目的;
选择规则:
- 把n个要排序的元素看成一个有序表和一个无序表;
- 开始有序表只有第一个元素,无序表有n-1个元素;
- 排序时每次从n-1中取出一个元素;
- 把该元素的与前一个元素按照我们约定的排序方式相比较,然后插入适当的位置,使之成为一个有序表;
- 简单来说:将第一个元素固定,每次循环拿后一个元素与前一个元素比较,如果不满足我们要求的排序规则就交换,最终达到有序;
2,代码实现:
package com.sort;
import java.util.Arrays;
/**
* @param
* @Author: AaNeei
* @Date: 2019/6/16 19:49
* @Description: 游学网
* @throws:
*/
public class InsertionSort {
public static void main(String[] args) {
int[] arr = {11, 13, -5, 34, 20};
sort(arr);
}
public static void sort(int[] arr) {
for (int i = 1; i < arr.length; i++) {
int insertVal = arr[i];
int index = i - 1;
int count = 0;
while (index >= 0 && insertVal < arr[index]) {
arr[index + 1] = arr[index];
index--;
count++;
}
if (count == 0) {
continue;
}
arr[index + 1] = insertVal;
System.out.println(Arrays.toString(arr));
}
}
}
注: :代码所示,比以往选择排序做了一个小优化,当while条件没有进入就不需要交换,可提前结束;