思维导图:
直接插入排序
代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(int argc, const char *argv[])
{
int arr[]={12,234,1,235,12,5};
int len=sizeof(arr)/sizeof(arr[0]);
int j;
for(int i=1;i<len;i++)
{
int t=arr[i];//保存无序区第一个元素,防止丢失
for(j=i-1;j>=0;j--)
{
if(t<arr[j])//
{
arr[j+1]=arr[j];//让有序序列往后面移动一个单位
}
else
{
break;
}
}
printf("j=%d\n",j);
arr[j+1]=t;//
}
for(int i=0;i<len;i++)
{
printf("%d\t",arr[i]);
}
return 0;
}
运行效果:
?