码迷,mamicode.com
首页 > 编程语言 > 详细

选择类排序:选择排序,堆排序

时间:2015-01-06 18:06:14      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:

选择类排序:1:简单选择排序O(n^2),空间O(1)
            2:堆排序O(n乘以log以2为底,n的对数),空间复杂度O(1)

//选择排序
void SelectSort(int R[],int n)
{
	int i,j,k;
	int tmp;
	for(i=0;i<n-1;i++)
	{
		k=i;
		for(j=i+1;j<n;j++)
		{
			if(R[j]<R[k])
				k=j;
		}
		if(k!=i)
		{
			tmp=R[i];
			R[i]=R[k];
			R[k]=tmp;
		}
	}
}

//堆排序
void sift(int R[],int low,int high)
{
	int i=low,j=2*i;
	int tem=R[i];
	while(j<=high)
	{
		if(j<high && R[j]<R[j+1])//孩子最大的给双亲
			j++;
		if(tmp<R[j])
		{
			R[i]=R[j];
			i=j;             //以孩子为双亲,继续向下探索
			j=2*i;
		}
		else 
			break;
	}
	R[i]=tmp;
}

void HeapSort(int R[],int n)
{
	int i;
	int tmp;
	for(i=n/2;i>=1;i--)//循环建立初始堆
		sift(R,i,n);
	for(i=n;i>=2;i--)
	{
		tmp=R[1];
		R[1]=R[i];
		R[i]=tmp;
		sift(R,1,i-1);
	}
}

选择类排序:选择排序,堆排序

标签:

原文地址:http://blog.csdn.net/ndzjx/article/details/42460403

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!