插入排序是一种简单直观的排序算法,其基本思想是将一个元素插入已经排好序的部分,逐步构建有序序列。插入排序的工作原理类似于整理扑克牌的过程,不断将手中的牌插入到已经有序的牌序中。
具体来说,插入排序的步骤如下:
以下是插入排序的升序和降序的实现
#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;
}
?