插入排序
思想:1.从第二个数开始比较
2.如果比第一个数大,就排在右边,否则,就在左边,同时在和左边的数一一比较
如果图看懂了,接下来的代码,将非常简单理解
头文件 sort.h
#include <stdio.h>
void Print(int* arr,int len)
{
int i;
for(i=0;i<len;i++)
{
printf("%d ",arr[i]);
}
printf("\n");
}
void Swap(int* a,int* b)
{
*a=*a+*b;
*b=*a-*b;
*a=*a-*b;
}
主函数main
#include "sort.h"
void InsertSort(int* arr,int len);
int main(void)
{
int arr[]={5,4,3,2,1};
int len=sizeof(arr)/sizeof(int);
Print(arr,len);
InsertSort(arr,len);
Print(arr,len);
return 0;
}
void InsertSort(int* arr,int len)
{
int temp,in,out;
if(arr!=NULL)
{
for(out=1;out<len;out++)
{
temp=arr[out];
in=out;
while(in>0 && arr[in-1]>temp)
{
// arr[in]=arr[in-1];
Swap(&arr[in],&arr[in-1]); //交换两个变量的值
in--;
}
// arr[in]=temp;
}
}
}