C++插入排序的实现

简介: C++插入排序的实现

插入排序(Insertion Sort)是一种简单且直观的排序算法,其基本原理是将未排序的元素逐个插入到已排序部分的合适位置,直到整个数组排序完成。

 

以下是插入排序的基本原理:

1. 从第二个元素开始(将第一个元素视为已排序部分),将当前元素插入到已排序部分的合适位置。

2. 每次将一个未排序的元素插入到已排序部分,直到所有元素都被插入完成。

 

插入排序的特点:

- 插入排序是一种稳定的排序算法,相同元素的相对位置不会改变。

- 时间复杂度为 O(n^2),其中 n 是待排序数组的元素个数。在最坏情况下,即数组逆序时,插入排序的时间复杂度最高。

- 插入排序是一种原地排序算法,只需要常数级别的额外空间。

 

尽管插入排序的时间复杂度较高,但对于小规模数据或是接近有序的数据,插入排序通常表现良好。在实际应用中,插入排序常常用作其他高级排序算法的优化手段,例如快速排序的优化部分。

 

如果需要更多关于插入排序的信息或示例代码,请随时告诉我。

以下是用 C++ 实现插入排序的示例代码:

```cpp
#include <iostream>
 
void insertionSort(int arr[], int n) {
    for (int i = 1; i < n; i++) {
        int key = arr[i];
        int j = i - 1;
 
        // Move elements of arr[0..i-1] that are greater than key to one position ahead of their current position
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j--;
        }
        arr[j + 1] = key;
    }
}
 
void printArray(int arr[], int n) {
    for (int i = 0; i < n; i++) {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;
}
 
int main() {
    int arr[] = {12, 11, 13, 5, 6};
    int n = sizeof(arr) / sizeof(arr[0]);
 
    std::cout << "Original array: ";
    printArray(arr, n);
 
    insertionSort(arr, n);
 
    std::cout << "Sorted array: ";
    printArray(arr, n);
 
    return 0;
}
```

 

在这段代码中,`insertionSort` 函数实现了插入排序算法,`printArray` 函数用于打印数组的元素,`main` 函数中定义了一个整型数组并对其进行插入排序

相关文章
|
4月前
|
算法 搜索推荐 C++
C++017-C++冒泡排序与插入排序
C++017-C++冒泡排序与插入排序
C++017-C++冒泡排序与插入排序
|
存储 人工智能 搜索推荐
【八大数据排序法】插入排序法的图形理解和案例实现 | C++
排序算法是我们在程序设计中经常见到和使用的一种算法,它主要是将一堆不规则的数据按照递增或递减的方式重新进行排序。在如今的互联网信息时代,随着大数据和人工智能的发展,大型企业的数据库中有亿级的用户数据量。因此对其进行处理,排序算法也就成为了其中必不可缺的步骤之一。
86 0
【八大数据排序法】插入排序法的图形理解和案例实现 | C++
|
人工智能 Linux C++
比较C++和C实现直接插入排序和二分插入排序效率
 比较C++和C实现直接插入排序和二分插入排序效率! 注:之前没有发现这其实是两个不同算法,现在更正下。 下面用C++实现二分插入排序和C实现直接插入排序,明天会继续测试下C++实现直接插入排序和C实现二分插入排序 下面是几次的输出结果:(C)Total seconds time taken by CPU: 119.
965 0
|
5天前
|
存储 编译器 C语言
c++的学习之路:5、类和对象(1)
c++的学习之路:5、类和对象(1)
19 0
|
5天前
|
C++
c++的学习之路:7、类和对象(3)
c++的学习之路:7、类和对象(3)
19 0
|
4天前
|
设计模式 Java C++
【C++高阶(八)】单例模式&特殊类的设计
【C++高阶(八)】单例模式&特殊类的设计