一.介绍.
其基本思想为数据元素被已经放入一个已经排好的有序数组中,现插入一个元素进入该数组,按顺序(即大小关系)放进适当位置,并且其后面的元素都向后移动移位。
如图:
对于上述问题:
代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#define SIZE 8//便于改变
int main()
{int arr[SIZE] = { 0 };for (int i = 0; i < SIZE; i++){scanf("%d", &arr[i]);}//直接插入排序for (int i = 1; i < SIZE; i++){int m = *(arr + i);//将arr[i]中的值赋给m//如果i>i-1那么交换int j = i - 1;while (j >= 0 && m > *(arr + j)){//交换*(arr + j + 1) = *(arr + j);j--;}*(arr + j + 1) = m;}//输出for (int i = 0; i < SIZE; i++){printf("%d ", *(arr + i));}return 0;
}