Java算法——直接插入排序

直接插入排序

前言

直接插入是一种稳定的插入排序,效率较高,而且时间复杂度也低,因为只是在一个数组内部进行内排,但是只适用于在有一些以前就排好的顺序的数组内部,如果在很长又很杂乱的数组内部进行排序的话,会让效率降低。

直接插入排序描述

首先定义一段长度为n的数组,从最左边开始:
第一趟的排序,只对前2个元素进行排序,
第二趟的排序,只对前3个元素进行排序,
第三趟的排序,只对前4个元素进行排序,
……

共计要进行n-1趟的排序。

代码图解

在这里插入图片描述

代码

package Algorithm;

import java.util.ArrayList;
import java.util.Scanner;

/**
 * 直接插入排序:依次遍历排序,直到全部读取结束
 */
public class charu_Sort {
    public static void main(String[] args) {
        int n = new Scanner(System.in).nextInt();
        int []arr = new int[n];
        System.out.println("给数组依次赋值吧");
        for(int i=0;i<n;i++) {
            arr[i] = new Scanner(System.in).nextInt();
        }
        for (int front=1;front<arr.length;front++){
            int p =arr[front];
            int behind;
            for (behind=front-1;behind>=0;behind--){
                if(p<arr[behind]){
                    arr[behind+1]=arr[behind];
                }else
                    break;
            }
            arr[behind+1]=p;
        }
        for(int u=0;u<arr.length;u++){
            System.out.println(arr[u]);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_41936805/article/details/85343694