C++程序 插入排序

C++程序 插入排序

插入排序是一种简单的排序算法,它的核心思想是将待排序的数列分为已排序和未排序两部分,初始时已排序部分只有一个元素,然后从未排序部分依次取出元素插入到已排序部分中的合适位置。这个过程就像是打扑克牌时摸牌后整理手牌的过程。

下面通过C++程序实现插入排序算法,具体代码如下(注:代码中使用C++11标准的auto关键字自动推导变量类型):

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

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

int main(){
    vector<int> nums = {3,6,1,9,0,4,7,2};
    insertSort(nums);
    for(auto num:nums){
        cout << num << " ";
    }
    cout << endl;
    return 0;
}

在这个代码中,我们定义了一个insertSort函数,它接受一个整数向量nums作为参数。这个函数使用一个for循环遍历整个向量,从下标1开始,因为下标0的元素可以看作已排好序的元素。

在循环体内,我们将第i个元素标记为临时变量temp,然后使用一个while循环,不断将temp与已排序部分中的元素进行比较,并将较大的元素往后移动,直到找到temp的合适位置。移动元素的过程可以使用被动赋值的方式,即不断将较大的元素往后移动一个位置,并将空出来的位置留给temp。

最后,我们将temp插入到合适的位置之后,即nums[j+1]这个位置。

在main函数中,我们定义了一个向量nums,使用insertSort函数对它进行排序,并输出排序后的结果。

结论

插入排序是一种简单且有效的排序算法,时间复杂度为O(n^2),虽然它的性能不如快速排序和归并排序等高级算法,但在部分数据量较小的排序问题上,插入排序表现得更加优秀。在实际应用中,插入排序经常被用作快速排序等高级算法的优化,或者在内存资源受限的场合下使用。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 示例