直接插入排序的c语言实现

Posted xulu_258

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了直接插入排序的c语言实现相关的知识,希望对你有一定的参考价值。

          直接插入排序即是在要排序的数组中,假设前n-1(n>=2)个数已经是排好序的,现在要把第n个数插入到前n个已经排好序的数组中,使得这n个数也变成有序的,如此反复循环,使得要排序的数组中的最后一个元素也排好序,

        我们可以先假设第一个数是排好序的,然后第二个数和第一个数进行比较,如果第二个数比第一个数大,那么说明前两个数排好序,无需做调整,如果第二个数比第一个数小,那么就把第一个数向后移,将第二个数放在第一个数的位置上,抽象出来就是用a[i]和a[i-1]进行比较,如果a[i]>a[i-1],那么就说明前i个数是已经排好序的,如果a[i]<a[i-1],就让j=i-1,temp=a[i],然后一边将数据a[j]向后移动,一边向前搜索,直到找到a[j]<a[i]时停止,并将temp放到a[j+1]处即可。

 具体代码实现如下:

 

//直接插入排序

#include<stdio.h>

void insertsort(int a[],int n)

   int i=0,temp=0,j=0;
   for(i=1;i<n;i++)
   
	   
	   if(a[i]<a[i-1])
	     temp=a[i];
	      for(j=i-1;j>=0&&a[j]>temp;j--)
		      a[j+1]=a[j];
	      a[j+1]=temp;
	   
	   
   
   for(i=0;i<n;i++)
	
	  printf("%4d",a[i]);
	
	printf("\\n");



int main()

	int i=0,length=0;
	int a[]=2,6,1,8,4,0,5;
	length=sizeof(a)/sizeof(a[0]);
	//printf("%d",length);
	insertsort(a,length);
    return 0;


以上是关于直接插入排序的c语言实现的主要内容,如果未能解决你的问题,请参考以下文章

直接插入排序的c语言实现

八大排序算法(C语言实现)

C语言编程实例7

c语言实现哈希排序代码

C语言试题八十九之实现插入排序算法

C语言试题八十九之实现插入排序算法