ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

C语言插入排序

2026/9/21 2:45:27 拓冰建站 浏览量
C语言插入排序

插入排序是一种简单直观的排序算法,其基本思想是将一个元素插入已经排好序的部分,逐步构建有序序列。插入排序的工作原理类似于整理扑克牌的过程,不断将手中的牌插入到已经有序的牌序中。

具体来说,插入排序的步骤如下:

  1. 从第一个元素开始,该元素可以认为已经被排序。
  2. 取出下一个元素,在已经排序的元素序列中从后向前扫描。
  3. 如果已排序的元素大于新元素,则将该元素移到下一位置。
  4. 重复步骤 3,直到找到已排序的元素小于或等于新元素的位置。
  5. 将新元素插入到该位置后。
  6. 重复步骤 2~5,直到整个序列都被排好序。

以下是插入排序的升序和降序的实现

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//升序
void insertqort(int* a, int len)
{int temp = 0;for (int i = 1; i < len; i++){if (a[i - 1] > a[i]){int temp = a[i];int j = i - 1;for (; j >= 0 && a[j] > temp; j--){a[j + 1] = a[j];//后移动}a[j + 1] = temp;}}
}
//降序
void seletqort(int* a, int len)
{for (int i = 0; i < len; i++){int max = i;for (int j = i + 1; j < len; j++){if (a[j] > a[max]){max = j;}}if (i != max){int tmp = a[i];a[i] = a[max];a[max] = tmp;}}
}
int main()
{int a[4];for (int i = 0; i < 4; i++){scanf("%d", &a[i]);}seletqort(a, 4);//insertqort(a, 4);for (int i = 0; i < 4; i++){printf("%d ", a[i]);}return 0;
}