排序算法之插入排序

来源:互联网 发布:弹钢琴软件 编辑:程序博客网 时间:2024/06/08 17:16
本文是自己在阅读《数据结构与算法分析c++描述》一书中的笔记、总结系列之一,主要会介绍排序算法中的插入排序的算法思想,代码实现。

一、插入排序之算法思想

内存中有数组1存放未排序状态的元素,排完序之后的元素也是放入该数组中,所以在排序的过程中,数组的前端处于有序状态,后端处于无序状态直至所有元素都处于有序状态。元素的个数为N,P为当前待比较的元素(仅指一个,注意P是从位置1开始)。
这里写图片描述

我们假设先将数组1中第一个元素即认为为当前最小元素,然后从P=1开始到P=N,对每一个P指向的元素与P所指元素之前的元素进行比较,若前端元素较大,则前端元素后退一个位置,直到遇到比该元素小的元素或者遇到数组头,则插入P所指向元素。
这里写图片描述

二、实现代码

#include <iostream>#include <vector>using namespace std;void insertionsort(vector<int> & arrayint){    for (int p = 1; p < arrayint.size(); p++)    {        int tmp = arrayint[p];        for (int j = p - 1; j >= 0; j--)        {            if (arrayint[j] < tmp)            {                arrayint[j + 1] = tmp;            }            else            {                if (j == 0)                {                    arrayint[j + 1] = arrayint[j];                    arrayint[0] = tmp;                }                else                    arrayint[j + 1] = arrayint[j];            }        }    }}void main(){    vector<int> arrayinput;    int a;    cout << "please input numbers: " << endl;    while (cin >> a)    {        arrayinput.push_back(a);    }    insertionsort(arrayinput);    for (auto a : arrayinput)        cout << a<<"  ";    getchar();}

这里写图片描述

0 0