码迷,mamicode.com
首页 > 编程语言 > 详细

插入排序

时间:2018-12-10 18:26:02      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:第一个   number   getc   通过   开始   code   原理   etc   out   

定义

它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到** O(1) **的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。

一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:

1、从第一个元素开始,该元素可以认为已经被排序
2、取出下一个元素,在已经排序的元素序列中从后向前扫描
3、如果该元素(已排序)大于新元素,将该元素移到下一位置
4、重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
5、将新元素插入到该位置后
6、重复步骤2~5

思路代码

#include <iostream>
#include <cstring>
#include <cstdio>
#include <conio.h>

using namespace std;
const int SIZE = 10000;

void fInsertionSort(int *pData, int size);

int main()
{
    int number;
    int fDate[SIZE] = { 0 };
    cout << "请输入需要进行排序的个数:";
    cin >> number;

    for (int i = 0; i < number; i++)
        cin >> fDate[i];

    cout << "————————————————" << endl;
    fInsertionSort(fDate, number);

    cout << "答案是:" << endl;
    for (int i = 0; i < number; i++)
        cout << fDate[i] << ‘ ‘;

    _getch();
    return 0;
}

void fInsertionSort(int *pData, int size)
{
    int i, j, key;
    for (i = 1; i < size; i++) 
    {
        key = pData[i];
        j = i - 1;
        while ((j >= 0) && (pData[j] > key)) 
        {
            pData[j + 1] = pData[j];
            j--;
        }
        pData[j + 1] = key;

        for (int i = 0; i < size; i++)
            cout << pData[i] << ‘ ‘;
        cout << endl;
    }
}

插入排序

标签:第一个   number   getc   通过   开始   code   原理   etc   out   

原文地址:https://www.cnblogs.com/JingWenxing/p/9950110.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!