c语言排序算法(1):直接插入排序算法

 1,在已经排好序的数组里插入一个元素:

/**************************************************
##filename      : insertSort.c
##author        : GYZ                              
##e-mail        : [email protected]                
##create time   : 2018-09-10 14:22:41
##last modified : 2018-09-10 14:56:47
##description   : NA                               
**************************************************/
#include                                 
#include                                 
                           
                       
#define N 10                    

void ShowArray(int array[],int n)
{
	int i = 0;
	for(;i < N; i++)
	{
		printf("%d,",array[i]);
	}
	printf("\n");
}                           

void InsertSort(int array[],int n,int eleNum)
{
	int j = 0;
	printf("insert an element %d...\n",eleNum);	
	for(j = n-1; (j>0) && (eleNum < array[j-1]); j--)
	{
		array[j] = array[j-1];	
	}
	array[j-1] = eleNum;
	printf("insert successfully! again show\n");
}
                        
int main(int argc,char *argv[])                    
{          
	int array[N] = {2,4,6,8,10,12,16,18,20};                                         
	ShowArray(array,N);
	InsertSort(array,N,14);
	ShowArray(array,N);                                                   
    return 0;                                      
}                                                  
                                                   
                                                   

  2,使用插入排序法去排序没有排好序的数组:

/**************************************************
##filename      : insertSort.c
##author        : GYZ                              
##e-mail        : [email protected]                
##create time   : 2018-09-10 14:22:41
##last modified : 2018-09-10 15:43:54
##description   : NA                               
**************************************************/
#include                                 
#include                                 
                           
                       
#define N 10                    

void ShowArray(int array[],int n)
{
	int i = 0;
	for(;i < N; i++)
	{
		printf("%d,",array[i]);
	}
	printf("\n");
}                           

void InsertSort(int array[],int n)
{
	int i = 0,j = 0;
	int temp = 0;
	printf("insertion sorting...\n");	
	for(i = 1; i < n; i++)
	{
		temp = array[i];
		for(j = i; (j>0) && (temp < array[j-1]); j--)
		{
			array[j] = array[j-1];
		}
		array[j] = temp;
	}
	printf("insertion sort successfully! again show\n");
}
                        
int main(int argc,char *argv[])                    
{          
	int array[N] = {12,14,6,18,10,2,16,8,20,4};                                         
	ShowArray(array,N);
	InsertSort(array,N);
	ShowArray(array,N);                                                   
    return 0;                                      
}                                                  
                                                   
                                                   

 

你可能感兴趣的:(C和C++编程学习)