插入排序(动图理解)

算法思路

  1. 从第一个元素开始,该元素可以认为已经被排序;
  2. 取出下一个元素,在已经排序的元素序列中从后向前扫描;
  3. 如果该元素(已排序)大于新元素,将该元素移到下一位置;
  4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
  5. 将新元素插入到该位置后;
  6. 重复步骤2~5。
    动图:
    在这里插入图片描述

代码实现

  • 简洁版代码
public static void insertSort(int[] array){
        int temp=0,j=0;
        for(int i=1,len=array.length;i<len;i++){
            temp=array[i];
            j=i;
            while (j>0 && array[j-1]>temp){
                array[j]=array[j-1];
                j--;
            }
            array[j]=temp;
        }
    }
  • 完整版代码
package sort;

/**
 * 插入排序
 * 从第二个开始,一旦比前面的小就往前面插到自己合适的位置去,就跟打扑克牌抓了牌去插牌差不多
 * 2  3  1 5
 * 由于3比1大,让3往后移动,再跟2对比,2币1 大那么2也往后移动,直到停下来,把1放到属于自己的位置
 * 2  -  3  5
 * -  2  3  5
 * 1  2  3  5
 * @author humorchen
 */
public class InsertSort {

    public static void insertSort(int[] array){
        int temp=0,j=0;
        for(int i=1,len=array.length;i<len;i++){
            temp=array[i];
            j=i;
            while (j>0 && array[j-1]>temp){
                array[j]=array[j-1];
                j--;
            }
            array[j]=temp;
        }
    }
    public static void print(int[] array){
        System.out.println("打印现在的数据");
        for(int t:array){
            System.out.print(t+" ");
        }
        System.out.println();
    }
    public static void main(String[] args) {
        int[] array={4,3,2,5,6,1,3,7};
        insertSort(array);
        print(array);
    }
}

明人不说暗话,动图是从https://www.cnblogs.com/onepixel/articles/7674659.html拿滴

posted @   HumorChen99  阅读(7)  评论(0编辑  收藏  举报  
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示