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

例题:二分法排序

2019-11-11 01:58:47
字体:
来源:转载
供稿:网友

用二分法实现排序

#include<stdio.h>int main(){	int i,array[100],n,j;	PRintf("Please enter the number quantities:/n");	scanf("%d",&n);	printf("Please input some numbers:/n");	for(i = 0; i < n; i++)	{		scanf("%d",&array[i]);	}	for ( i = 0; i < n; i++)  	{  		int start = 0;  		int end = i - 1;  		int middle = 0;  		int temp = array[i];  		while (start <= end)                  //左边大于右边结束		{   			middle = (start + end) / 2;   //取中间元素			if (array[middle] > temp)//要排序元素在已经排过序的数组左边  			{  				end = middle - 1;  			}  			else  			{  				start = middle + 1;  			}  		}  		for ( j = i - 1; j > end; j--)//找到了插入的位置,然后将这个位置以后的所有元素向后移动  		{  			array[j + 1] = array[j];  		}  		array[end + 1] = temp;  	}  	for(i = 0; i < n; i++)	{		printf("%d ",array[i]);	}}


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