插入排序


/****************************************************************
 * name;InsertSort
 * function:sort
 * parameter;
 *              @int arr[]
 *              @int arrsize
 *
 * ReValue;none
 * author;小北blog
 * attention;none
 * date;2024.06.01
 * history;
 * version;
 * Copyright(c) 2024 huahuadebaby99@163.com All rights reserved
 *****************************************************************/
void InsertSort(int arr[], int arrsize)
{
    int i, j, temp;
    for (i = 1; i < arrsize; i++)
    {
        temp = arr[i];                  // 备份当前i位置下的值
        j = i - 1;                      // i前面的值
        while (j >= 0 && arr[j] > temp) // 判断
        {
            arr[j + 1] = arr[j]; // 备份值小于当前值把当前值向后移
            j--;                 // 往前循环
        }
        arr[j + 1] = temp; // 插入
    }
}
// 打印数组
void printArray(int arr[], int size)
{
    for (int i = 0; i < size; i++)
    {
        printf("%d ", arr[i]);
    }
    printf("\n");
}
// 主函数
int main()
{
    int arr[] = {77, 66, 44, 11, 99, 55};
    int n = sizeof(arr) / sizeof(arr[0]);
    printf("原来的数组: \n");
    printArray(arr, n);
    InsertSort(arr, n);
    printf("排序后的数组: \n");
    printArray(arr, n);
    return 0;
}

验证结果:

总结:和其他排序的框架差不多,插入排序的中心思想就是比大小,谁大谁往后移。
循环次数也就是size-1次,框架和冒泡排序很像。

posted @ 2024-06-01 14:47  小北bolg  阅读(17)  评论(0)    收藏  举报