插入排序—直接插入排序

插入排序是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序的序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,在从后向前扫描的过程中,需要反复把已排序的元素逐步向后移动,为最新元素提供插入空间。

  • 算法步骤:

初始化一个数组。

无标题.png

(1)  对于第1个元素,因为没有比较,直接将其作为有序的序列。

无标题.png


(2) 
从数组中获取下一个元素,在已经排序的元素序列中从后向前扫描,并进行判断。若排序序列的元素大于新元素,则将该元素移动下一位置。直到找到已排序的元素小于或者等于新元素的位置。

(3)  重复此(2)步骤

无标题.png

  • 算法实现:

public class InsertSort {

 

   public static void main(String[] args) {

      int arr[]= {56,20,38,75,26,91,16};

      System.out.println("排序前:"+Arrays.toString(arr));

      sort(arr);

      System.out.println("排序后:"+Arrays.toString(arr));

   }

   public static void sort(int arr[]) {

      int temp,j;

      for(int i=1;i<arr.length;i++) {

         temp=arr[i];

         for(j=i-1;j>=0 && arr[j]>temp;j--) {

            arr[j+1]=arr[j];

         }

         arr[j+1]=temp;

      }

   }

}

排序前:[56, 20, 38, 75, 26, 91, 16]

排序后:[16, 20, 26, 38, 56, 75, 91]


猜你喜欢

转载自blog.51cto.com/13733462/2114241