插入排序:
func.h
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
//用宏的方法写一个交换方法
#define SWAP(a,b) {int tmp;tmp=a;a=b;b=tmp;}
void print(int*);
void arr_insert(int*);
func.c
#include "func.h"
//打印函数实现
void print(int *a)
{
int i=0;
for(i=0;i<N;i++)
{
printf("%3d",a[i]);
}
printf("\n");
}
//插入排序实现 往内层有序序列里面插入
//插入排序用链表实现,就是有序插入
void arr_insert(int *a)
{
int i,j,k,insert_val;
//要插入的数的序列
for(i=1;i<N;i++)
{
insert_val=a[i];
//有序数的数目 插入排序复杂度接近O(n^2)
for(j=0;j<i;j++)
{
if(a[i]<a[j])
{
//发生移动
for(k=i-1;k>=j;k--)
{
a[k+1]=a[k];
}
break;
}
}
a[j]=insert_val;
}
}
main.c
#include "func.h"
int main()
{
int a[N];
int i;
srand(time(NULL));
for(i=0;i<N;i++)
{
a[i]=rand()%100;
}
print(a);
//插入排序
arr_insert(a);
print(a);
system("pause");
}