1、插入排序

实现思路:

1.从数组的第二个数据开始往前比较,即一开始用第二个数和他前面的一个比较,如果 符合条件(比前面的大或者小,自定义),则让他们交换位置。

2.然后再用第三个数和第二个比较,符合则交换,但是此处还得继续往前比较,比如有 5个数8,15,20,45, 17,17比45小,需要交换,但是17也比20小,也要交换,当不需 要和15交换以后,说明也不需要和15前面的数据比较了,肯定不需要交换,因为前 面的数据都是有序的。

3.重复步骤二,一直到数据全都排完。

代码范例

#include "stdafx.h"
#include<windows.h>
#include<iostream>

using namespace std;

//插入排序
bool StraightSort(int *arr, int len)
{
    int tmp;
    int i;
    int j;
    for (i = 1; i < len; i++)
    {
        tmp = arr[i];
        for (j = i - 1; j >= 0 && arr[j] > tmp; j--)
        {
            arr[j + 1] = arr[j];
        }
        arr[j + 1] = tmp;
    }
    return true;
}


int main()
{
    bool bRet;
    int temp[] = { 3,2,1 };

    bRet = StraightSort(temp, sizeof(temp) / sizeof(int));
    for (int i = 0; i < sizeof(temp) / sizeof(int); i++)
    {
        cout << temp[i];
    }

    system("pause");
    return 0;
}
原文地址:https://www.cnblogs.com/zwj-199306231519/p/14271473.html