首页 > 其他分享 >插入排序

插入排序

时间:2024-06-01 14:55:55浏览次数:16  
标签:arr temp int 插入排序 printf size


// 通过指针交换两个元素的值
void swap(int *a, int *b)
{
    int temp = *a;
    *a = *b;
    *b = temp;
}
/****************************************************************
 * name;InsertSort
 * function:sort
 * parameter;
 *              @int arr[]
 *              @int arrsize
 *
 * ReValue;none
 * author;小北blog
 * attention;none
 * date;2024.06.01
 * history;
 * version;
 * Copyright(c) 2024 [email protected] 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次,框架和冒泡排序很像。

标签:arr,temp,int,插入排序,printf,size
From: https://www.cnblogs.com/ikunkunkun/p/18225973

相关文章

  • 数据结构排序算法之直接插入排序与希尔排序【图文详解】
    P.S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。P.S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。                                             博主主页:LiUEEEEE         ......
  • 数据结构的直接插入排序(C语言版)
    一.直接插入排序的基本概念1.直接插入排序的基本思想将数组分为已排序和未排序两部分。每次从未排序部分取出一个元素,将其插入到已排序部分的合适位置,使得已排序部分保持有序。重复步骤2,直到整个数组有序。2.排序的工作原理假设前i-1个元素已经有序,现在要将......
  • 七大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、归并排序、快速排序
    以下内容转载自文章1.插入排序步骤:1.从第一个元素开始,该元素可以认为已经被排序2.取下一个元素tem,从已排序的元素序列从后往前扫描3.如果该元素大于tem,则将该元素移到下一位4.重复步骤3,直到找到已排序元素中小于等于tem的元素5.tem插入到该元素的后面,如果已排序所有元......
  • 03 插入排序
    1.插入排序的含义类似扑克牌,假设认为0-0位置有序,再把0-1的位置变有序,循环直到所有的有序。每次拿取右侧的数字,一个一个对比放到左侧来。2.示例代码definsertion_sort(arr):ifarrisNoneorlen(arr)<2:returnforiinrange(1,len(arr)):#......
  • 冒泡排序、插入排序、选择排序
    冒泡排序思想:从左到右,元素交换。第一个元素和第二个元素比较,若第一个元素大于第二个,则交换元素,再第二个元素与第三个元素比较,依次比较,直到比较完。则最尾部的元素是最大值。voidmaopao(inta[5],intsi){for(inti=0;i<si-1;i++){for(intj=0;......
  • 插入排序
    插入排序简单来说假设数组第一个元素为一个有序序列然后将后面的无序序列依次与第一个元素比较更具大小决定待插入元素插入的位置。、、、//插入排序是吧无序序列中的元素依次插入到有序序列中,一般是从有序序列的尾部开始比较voidInsertSort(intbuf[10],intbufsize){......
  • 排序3-插入排序
    排序3-插入排序插入排序把排序对象分成已排序和未排序两个部分,每次选取未排序部分的首元素,将它插入已排序部分的合适部分插入排序(正序)//插入排序voidinsertSort(intarr[],intlength){intj;for(inti=1;i<length;i++){//i是无序部分首元素的下标......
  • NzN的数据结构--插入排序
         排序排序我要Disney,今天我们先来看看经典排序算法里的插入排序,先三连后看才是好习惯!!!目录一、排序的概念及应用1.排序的概念2.排序的应用3.常见的排序算法二、插入排序1.基本思想2.直接插入排序3.希尔排序(缩小增量排序)一、排序的概念及应用1.......
  • 排序之插入排序和交换排序
    排序的分类内部排序插入排序直接插入排序折半插入排序希尔排序交换排序冒泡排序快速排序选择排序简单选择排序堆排序⭐归并排序基数排序外部排序插入排序直接插入排序在待排序的元素序列基本有序的前提下,直接插入排序是效率最高的排序算法利用直接插入排序的......
  • 插入排序的基本实现【数据结构与算法—TypeScript 实现】
    笔记整理自coderwhy『TypeScript高阶数据结构与算法』课程概念本质:将数列分为已排序和未排序,将未排序中的元素插入到已排序中的合适位置特性复杂度分析时间复杂度:最好情况:O(n),有序序列最坏情况:O(n^2),倒序序列平均情况:O(n^2),随机数列空间复杂度:O(n),原地排序使......