排序算法-插入排序

插入排序是一种简单直观的排序算法,其基本思想是将一个待排序的数组分为已排序区间和未排序区间,每次从未排序区间中取出一个元素,插入到已排序区间的适当位置,直到所有元素都被插入到已排序区间为止。

插入排序的实现可以采用两种方式:一种是直接插入排序,另一种是希尔排序。

1、直接插入排序

        直接插入排序的实现非常直观,可以按照以下步骤进行:

  • 将第一个元素看作已排序区间,将剩余的元素看作未排序区间;
  • 依次从未排序区间中取出一个元素,将它插入到已排序区间的适当位置,使得插入后仍然保持已排序区间从小到大的顺序;
  • 重复步骤2,直到所有元素都被插入到已排序区间为止。

2、希尔排序

        希尔排序是一种改进版的插入排序算法,其思想是将待排序数组按照一定的间隔分成若干个子数组,对每个子数组分别进行插入排序,然后缩小间隔,继续进行插入排序,直到间隔为1,最后进行一次插入排序即可。


下面分别是Java、C++和Python实现插入排序的示例代码:

Java代码:

public class InsertionSort {
    public static void insertionSort(int[] arr) {
        int n = arr.length;
        for (int i = 1; i < n; ++i) {
            int key = arr[i];
            int j = i - 1;
            while (j >= 0 && arr[j] > key) {
                arr[j + 1] = arr[j];
                j = j - 1;
            }
            arr[j + 1] = key;
        }
    }
}

C++代码:

#include <iostream>
#include <vector>
using namespace std;

void insertionSort(vector<int>& arr) {
    int n = arr.size();
    for (int i = 1; i < n; ++i) {
        int key = arr[i];
        int j = i - 1;
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j = j - 1;
        }
        arr[j + 1] = key;
    }
}

Python代码:

def insertionSort(arr):
    n = len(arr)
    for i in range(1, n):
        key = arr[i]
        j = i - 1
        while j >= 0 and arr[j] > key:
            arr[j + 1] = arr[j]
            j = j - 1
        arr[j + 1] = key

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值