现在的位置: 首页 > 综合 > 正文

插入排序的C语言实现

2017年06月11日 ⁄ 综合 ⁄ 共 725字 ⁄ 字号 评论关闭

 

//直接插入排序
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#define N 10
int E[]={213,111,222,77,400,300,987,1024,632,555};
//两个函数皆可使用

//方法一
void si_sort(int e[],int n)
{
	int i,j,t;
	for(i=1;i<n;i++)//控制e[i],e[i+1],...e[n-1]的比较插入步骤
		//找到e[i]的插入位置
	{	//从小到大排序
		for(t=e[i],j=i-1;j>=0&& t<e[j];j--)
			e[j+1]=e[j];//满足条件,j顺序右移;
		//不满足条件执行将e[j]的值放在e[i]的位置上(只是用e[j+1]表示),//e[i-1]的值赋给e[i]
		//然后再执行j--
			
			e[j+1]=t;//外循环j有两种取值:1、符合时,e[i]的值保持不变;2、不符合时,e[i]的值赋给e[i-1] 注意i比j值大1
	}
}

////方法二
// void si_sort(int e[],int n)    
//    {    
//        for (int i = 1; i < n; i++)    
//        {    
//            int t = e[i];    
//            int j = i;    
//            while ((j > 0) && (e[j - 1] > t))    
//            {    
//                e[j] = e[j - 1];//交换顺序    
//                --j;    
//            }    
//            e[j] = t;    
//        }    
//    }     
//

void main()
{
	int i;
	printf("插入排序 初始数据序列为:\n");
	for(i=0;i<N;i++)
		printf("%d ",E[i]);
	printf("\n ");
	si_sort(E,N);
	for(i=0;i<N;i++)
		printf("%d ",E[i]);
}

抱歉!评论已关闭.