首页 > 学院 > 开发设计 > 正文

二分法排序

2019-11-11 01:57:07
字体:
来源:转载
供稿:网友

二分法插入排序是在插入第i个元素时,对前面的0~i-1元素进行折半,先跟他们中间的那个元素比,如果小,则对前半再进行折半,否则对后半进行折半,直到left>right,然后再把第i个元素前1位与目标位置之间的所有元素后移,再把第i个元素放在目标位置上。

/*****************************************************

copyright (C), 2016-2017, Lighting Studio. Co.,     Ltd. :File name:Author:luoye   Version:0.1    Date: Description:Funcion List: *****************************************************/#include <stdio.h>#define N 10                             //定义数组大小void fun(int a[], int low, int high)     //排序函数         {	int mid, temp;	int i, j;	for( i = 1; i < N; i++)	{		temp = a[i];		high = i - 1;		low = 0;		while( low <= high)		{			mid = (low + high)/2;			if( temp < a[mid])			{				high = mid - 1;			}			else			{				low = mid + 1;			}		}				for(j = i; j > low; j--)      //把数组向后移动以便插入第i个数		{			a[j] = a [j-1];		}		a[low] = temp;	}}int main(){	int a[N];	int i;	int high = 0;	int low = 0;	PRintf("Please enter 10 numbers:");	for(i = 0; i < N; i++ )	{		scanf("%d",&a[i]);	}	fun(a, high, low);	for(i = 0; i < N; i++)	{		printf("%4d",a[i]);	}	printf("/n");    return 0;}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表