C语言实现的插入排序算法
两种实现方式
代码繁多(逻辑简单)
#include<stdio.h>
int main()
{
int a[10]={2,4,7,3,1,9,8,6,0,5};
for(int i=1;i<10;i++)
{
int k=i;
for(int j=i-1;j>=0;j--)
{
if(a[i]<a[j])
{
k=j;
}
}
//k为a[i]应该所在的位置
//置换位置
int temp=a[i];
for (int m=i;m>k;m--)
{
a[m]=a[m-1];
}
a[k]=temp;
}
for(int h=0;h<10;h++)
{
printf("%d",a[h]);
}
return 0;
}
代码简洁(逻辑复杂)
#include<stdio.h>
int main(){
int a[10] = {2,6,3,1,4,8,5,9,7,0};
for(int i = 1 ; i< 10 ; i++){
int tem = a[i];
int j = i-1;
while (j >= 0&& a[j] > tem)
{
a[j+1] = a[j];
j--;
}
a[++j]=tem;
}
for (int i = 0; i < 10; i++)
{
printf("%d",a[i]);
}
return 0;
}
插入排序.png
上面两种代码。代码简洁一般逻辑复杂,代码繁多的一般逻辑简单。逻辑简单一般符合机器思维,逻辑复杂一般符合人脑符合。