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

5元组用7次排序

2013年10月11日 ⁄ 综合 ⁄ 共 781字 ⁄ 字号 评论关闭

假设我们的五元组是ABCDE,那么它最多只需要7次比较就可以保证把5元组排好序。

其主要的思想是固定中间的C,分别比较两边的数,然后在一起进行比较。具体过程可以看sort函数,写的有点难看,将就一下吧,有问必答!大笑

#include "stdafx.h"

void swap(int *a,int *b)
{
	int temp=0;
	temp=*a;
	*a=*b;
	*b=temp;
}


void sort (int *array5)
{
	if(array5[0]>array5[4]) swap(&array5[0],&array5[4]);
	if(array5[1]>array5[3]) swap(&array5[1],&array5[3]);
	if(array5[0]>array5[1]) swap(&array5[1],&array5[0]);
	if(array5[3]>array5[4]) swap(&array5[4],&array5[3]);
	if(array5[2]<array5[1])
	{
		swap(&array5[2],&array5[1]);
		if(array5[1]<array5[0]) swap(&array5[1],&array5[0]);
		return;
	}

	else if(array5[2]<array5[3]) return;
	else
	{
		if(array5[2]>array5[4]) 
		{
			swap(&array5[2],&array5[3]);
			swap(&array5[3],&array5[4]);
		}
		else swap(&array5[2],&array5[3]);
	}

}


int _tmain(int argc, _TCHAR* argv[])
{
	int arr[5]={7,5,9,0,1};
	sort(arr);
	for ( int i = 0; i < 5; ++i)
		printf("%d",arr[i]);
	return 0;
}

抱歉!评论已关闭.