插入排序

来源:互联网 发布:淘宝销量计算规则 编辑:程序博客网 时间:2024/06/05 08:20

1.直接插入排序

这里写图片描述

#include <stdio.h>void InertSort(int* arr, int size){    int pos = 0;    for (int i = 1; i < size; i++)    {        int tmp = arr[i];        pos = i-1;        while (pos >= 0 && arr[pos] > tmp)        {            arr[pos + 1] = arr[pos];            pos--;        }        arr[pos + 1] = tmp;    }}

2.希尔排序

希尔排序属于插入类排序,是将整个有序序列分割成若干小的子序列分别进行插入排序。

排序过程:先取一个正整数d1 < n,把所有序号相隔d1的数组元素放一组,组内进行直接插入排序;然后取d2 < d1,重复上述分组和排序操作;直至di=1,即所有记录放进一个组中排序为止。
这里写图片描述

void ShellSort(int* arr, int size){    int gap = size;    while (gap > 1)    {        gap = gap / 3 + 1;        int pos = 0;        for (int i = pos + gap ; i < size; i++)        {            int tmp = arr[i];            pos = i - gap;            while (pos >= 0 && arr[pos] > tmp)            {                arr[pos + gap] = arr[pos];                pos-=gap;            }            arr[pos + gap] = tmp;        }    }}