冒泡排序和选择排序

#include <stdio.h>
/*冒泡排序由小到大
冒泡的中心思想是将前面的数
与其后面的所有数进行比较,
如果其后面有比它大的数,则
两者换位置,所以比较次数为
n*(n-1)/2 
*/ 
/*int main()
{
  int n;
  while(scanf("%d",&n)!=EOF)
  {
  	int a[100],i,j,p;
  	for(i=0;i<n;i++)  //Input 
  	  scanf("%d",&a[i]);
  	for(i=0;i<n-1;i++) //核心算法 比较 
  	{ 
       for(j=i+1;j<n;j++)
	   {
	      if(a[i]>a[j]) //换位 
	      {
	      	p=a[i];
	      	a[i]=a[j];
	      	a[j]=p;
		  }
	   }	
    }
    for(i=0;i<n;i++) //输出 
    {
    	printf("%d ",a[i]);
	}
  	printf("\n");
  }
}*/
/*选择排序 由小至大
选择排序的核心思想是在一个长度为N的
无序数组中,在第一趟遍历N个数据,找
出其中最小的数值与第一个元素交换,
第二趟遍历剩下的N-1个数据,找出其中
最小的数值与第二个元素交换......第
N-1趟遍历剩下的2个数据,找出其中最
小的数值与第N-1个元素交换,至此选
择排序完成。 
*/
int main()
{
  int n;
  while(scanf("%d",&n)!=EOF)
  {
  	int a[100],i,j,min,minval;
  	for(i=0;i<n;i++)  //Input 
  	  scanf("%d",&a[i]);
    for(i=0;i<n;i++) //核心 
    {
    	min=i;
    	minval=a[i];
    	for(j=i+1;j<n;j++)
    	{
    		if(a[j]<minval)
    		{
			   minval=a[j];
			   min=j;
			} 
		}
		a[min]=a[i];
    	a[i]=minval;
    }
    for(i=0;i<n;i++) //输出 
    {
    	printf("%d ",a[i]);
	}
  	printf("\n");
  }
} 















猜你喜欢

转载自blog.csdn.net/Pain_Love/article/details/80724598
今日推荐