插入排序
插入排序是排序算法当中一种很基础的算法,同时他也我们日常生活当中所见到最多的排序。
比如我们在拿扑克牌的时候,所用的排序方法就是将手中刚刚拿到的牌放入一个比前边大后边小的位置,直接插入进去,这就是插入排序。
所以我们要对插入排序进行实现我们就要进行代码的模拟。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[8]={1,3,5,4,6,7,2,9};
int i =0;
for(i = 0;i<7;i++)
{
int end = i;
int tmp = a[i+1];
while(end>=0)
{
if(a[end]<tmp)
{
a[end+1]=a[end];
end--;
}
else
break;
}
a[end+1] = tmp;
}
for(i = 0;i<=7;i++){
printf("%d",a[i]);
}
return 0;
}
首先我们给定一个数组,取一些没有顺序大小的数字。
我们要进行一个降序的排序。
插入排序的本质就是用下一个插入的数,来和已经排序好的数进行比较一旦发现一个合适的中间位置,那么我们就可以插入进去。
但是,如果说要插入进去就必须要有空位让我们插入进去,那么我们就需要将数组后移,数组的元素后移就会导致对元素的覆盖。
所以我们可以先拷贝需要插入进去的数,然后再进行排序。
建立一个while循环,因为我们是第end个数,所以我们的排序次数肯定不能超过end所以我们while的条件就是end>=0;当end等于零时是最大的排序次数。
进入循环后,如果要插入的数大于前一个数那么就将前一个数后移,然后对end进行减减。
继续搜寻下一个数,直到插入的数小于前一个数,然后else跳出while循环。
因为我们需要插入的数是小于前一个数end的,所以我们要插入在他的后面也就是end,而且经过前边的后移,end+1这个下标的位置已经变成了一个空的位置可以让需要插入的数插入进去。
这样就实现了插入排序的作用。
标签:end,插入排序,基础,C语言,插入,后移,排序,我们 From: https://blog.csdn.net/2404_88411223/article/details/144095309