直接插入排序

189 阅读1分钟
import java.util.Arrays;

/**
 * 直接插入排序
 * 个人理解:1.可以理解为现实生活的排队,按高低个排,新来的跟已经排好队的比较,找到插入的位置
 *  2.时间复杂度,因为需要两层循环,最好情况是已经排好队,则O(n),最坏情况完全无序,则O(n²)
 *  3.空间复杂度,因为没有用的额外空间,所以为0(1)
 *  4.稳定性,因为没有发生跳跃式变换(跳跃式指非相邻元素交换位置),所以稳定
 */
public class SortTest {

    public static void main(String[] args) {
        int[] arr = {70, 12, 82, 43, 99, 23, 38, 53, 22};
        insertSort(arr);
        Arrays.stream(arr).forEach(System.out::println);
    }

    public static void insertSort(int[] arr) {
        for (int i=1; i<arr.length; i++) {
            int temp = arr[i];
            int j = i-1;

            for (; j>=0; j--) {
                if (temp < arr[j]) {
                    arr[j+1] = arr[j];
                } else {
                    break;
                }
            }

            arr[j+1] = temp;
        }
    }

}