走进数据结构之排序(一)---直接插入排序

本文深入探讨了直接插入排序算法,包括其工作原理、升序和降序的Java实现、直观的小例子以及时间复杂度和空间复杂度分析。直接插入排序在最好情况下时间复杂度为O(n),最坏情况下为O(n^2),是稳定的排序算法。
摘要由CSDN通过智能技术生成

一、直接插入排序算法分析

直接插入排序是假定前i个构成的子序列是处于已排序的情况下进行排序的,然后将第i个元素与前i个构成的子序列逆序进行比较,如果是要升序排序,则比较第i个元素是否比j=i-1(i-1需要>=0)的元素大,如果是则第i个元素的位置(即j+1的位置上)保持不动,反之则将j=i-1的元素放置到i的位置,再进行第i个元素与j=i-2(i-2需要>=0)的,依次进行,如果第i个元素刚好比j=i-3大,则将第i个元素插入到j=i-2(即j+1的位置)上!

二、代码实现

package top.einino.insertionsort;

public class StraightInsertionSort {

//直接插入排序,升序排序
public static void insertSortAsc(int[] keys){
    for(int i=1;i<keys.length;i++){
            int temp = keys[i],j;//从数组的第二个开始进行插入排序
            for(j=i-1; j>=0 && temp<keys[j]; j--){
      

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值