zoukankan      html  css  js  c++  java
  • 算法学习记录3 插入排序

    自己的理解

    1.从数组第二个元素(当前元素)开始不断和之前的元素比较大小,直到遍历完整个数组

    2如果之前元素比当前元素大(之前的元素为从当前元素前1个元素开始遍历到数组第一个元素),将之前元素复制到后一格位置,然后继续判断再下一个元素和当前元素的大小,重复2

    3做2直到找到了一个元素比当前元素小,那这个元素后面的那个位置就是当前元素需要插入的位置.

    具体实现

     1 package algorithm;
     2 
     3 import java.util.Arrays;
     4 
     5 /**
     6  * 
     7  * 插入排序
     8  * 
     9  * @author jyzjyz12@163.com
    10  * @since 2017年2月28日 上午10:12:54
    11  */
    12 public class InsertSortTest1 {
    13 
    14     public static void main(String[] args) {
    15         int[] arr1 = { 4, 7, 5, 6, 1, 3, 8 };
    16         int[] arr2 = { 7, 6, 5, 4, 3, 2, 1 };
    17         int[] arr3 = { 5, 9, 3, 7, 8, 6, 1, 2, 4 };
    18         int[] arr4 = { 13, 2, 5, 4, 88, 76, 68, 87, 55, 88, 88, 77, 67, 99, 100, 5, 53, 52, 51, 66 };
    19         sort(arr1);
    20         sort(arr2);
    21         sort(arr3);
    22         sort(arr4);
    23         System.out.println(Arrays.toString(arr1));
    24         System.out.println(Arrays.toString(arr2));
    25         System.out.println(Arrays.toString(arr3));
    26         System.out.println(Arrays.toString(arr4));
    27     }
    28 
    29     public static void sort(int[] arr) {
    30         for (int i = 1; i < arr.length; i++) { // 从第2个元素开始遍历整个数组
    31             int j = i, value = arr[i]; // 记录一下当前的元素的位置和值
    32             while (j > 0 && arr[j - 1] > value) { // 当前元素不断和之前的元素比较大小,直到到达数组头部或者之前元素的值小于当前元素
    33                 arr[j] = arr[j - 1];// 如果之前的元素比当前元素大就把之前的元素向后移动一格位置(其实是复制到后面一格位置,但是不用清除之前的位置,因为再之前的元素也可能会覆盖这个位置),直到到数组头部或者找到了一个比当前元素小的位置
    34                 j--;
    35             }
    36             arr[j] = value;// 找到的这个位置的元素已经向后移动了一个格子,找到的这个位置就是当前元素应该要插入到的位置
    37         }
    38     }
    39 }
    View Code
  • 相关阅读:
    使用secureCRT连接VMware-Ubuntukylin虚拟机
    java使用POI jar包读写xls文件
    SimpleDateFormat 相关用法
    ORACLE之表
    ORACLE之PACKAGE-游标变量
    PHP多进程学习(三)__代码案例来了解父进程与子进程的执行顺序
    PHP多进程学习(二)__fork起多个子进程,父进程的阻塞与非阻塞
    PHP多进程学习(二)__来初步了解一下PHP多进程及简单demo
    Python学习【三】
    Python学习【二】
  • 原文地址:https://www.cnblogs.com/abcwt112/p/6478518.html
Copyright © 2011-2022 走看看