插入排序
插入排序算法是基于一个有序的序列中进行的。
代码:
// 算法讲解网址 https://www.bilibili.com/video/av41132733?from=search&seid=9097634773781529212
#include <stdio.h>
void insert_sort(int a[], int n)
{
int i = 0,temp = 0,j = 0;
for(i = 1; i < n; i++) // 循环次数 n - 1次
{
if(a[i] < a[i-1]) // 第一个数肯定是作为基准,
{ // 后一个数与前一个数比较,如果小,就进行排序
temp = a[i]; // 存储 a[i]
a[i] = a[i-1];
for(j = i - 2; j>=0&&temp<a[j];j--) // 用 存储的数据与下面的数据比较,寻找可以插入的位置
{ // j 变量用来防止数组下标为负;
a[j+1] = a[j];
}
a[j+1] = temp;
}
}
}
int main()
{
int arr[] = {1,5,2,45,36,8,12,9,99,6};
int i = 0;
insert_sort(arr,10);
for(i = 0; i < 10; i++)
printf("%-3d", arr[i]);
return 0;
}