当前位置:   article > 正文

插入排序(C语言)_插入排序c语言

插入排序c语言

一、插入排序的原理

  1. 把第一个元素和第二个元素比较,若第一个大于第二个,则交换两个元素的位置。
  2. 把第三个元素插入到已排好序的前两个元素中的合适位置。
  3. 将第四个元素插入到已排好序的前三个元素中的合适位置。
  4. 以此类推,直到所有的元素都插入到合适的位置。

二、代码实现

void insertion_sort(int arr[], int len)
{
    int temp;//用来存放临时的变量
    for (int i = 1; i < len; i++) //从第二个元素开始,因为第一个元素可以认为已经排好序了
    {
        temp = arr[i]; // 取出当前需要插入的元素
        for (int j = i - 1; j >= 0 && arr[j] > temp; j--) // 依次后移,查找插入位置
        { 
            arr[j + 1] = arr[j]; // 将当前元素后移一位
        }
        arr[j + 1] = temp;// 插入到合适的位置
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

三、实现从小到大排序

输入10个数字并将其从小到大排

#include <stdio.h>
void insertion_sort(int arr[], int len)
{
    int i, j, temp;
    for (i = 1; i < len; i++) 
    {
        temp = arr[i];
        for (j = i - 1; j >= 0 && arr[j] > temp; j--)
        { 
            arr[j + 1] = arr[j];
        }
        arr[j + 1] = temp;
    }
    for (int i = 0; i < len; i++)
    {
        printf("%d ", arr[i]);
    }
}

int main()
{
    int arr[10];
    for (int i = 0; i < 10; i++)
    {
        scanf("%d", &arr[i]);
    }
    insertion_sort(arr, 10);
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

结果
在这里插入图片描述

四、插入排序的优缺点

优点:
如果是进行相对有序的数组,效率会非常高。不占额外空间,是一种稳定的算法。

缺点:
时间复杂度高,遇到数据过多的情况下不是很适用。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/821442
推荐阅读
相关标签
  

闽ICP备14008679号