选择排序的勘误

上次算法并不是本来的含义,特此修改,且这次算法对输出格式有比较麻烦的要求,代码较为繁琐

include <stdio.h>

  int num;//最大数的下标 ,全局变量,

  int Max(int a[],int n)//这个算法找出前i个元素的最大值
  {
      int max=a[0];
      num=0;
      for(int i=0;i<n;i++) 
	if(max<a[i]) 
	{
		max=a[i];
		num=i;
	}

return	max;	 

}

  void Selection_sort(int a[],int b[],int n)
  {
      int mid;
      int temp;
for(int i=n-1;i>=0;i--)
{
	Max(a,i+1);
	for(int j=0;j<n;j++)//格式输出要求而已,无意义
	{
		if(num==i) 
		{
			continue;
		}
		if(j==i||j==num) printf("(%d)\t",a[j]);
		else printf("%d\t",a[j]);
	}
	
	if(num!=i) printf("\n");
	b[i]=a[num];//交换数字,对找到的最大数赋值给最后的一个数组元素
	a[num]=a[i];
}

}

  int main()
  {
      int n; 
      int b[100]={0};
      int a[100]={0};
      printf("Please input the length of the integer array:\n");
      scanf("%d",&n);
      printf("Now please input the array (space between each value,and end with Enter):\n");
      for(int i=0;i<n;i++) scanf("%d",&a[i]); 
      Selection_sort(a,b,n);
      printf("The sorted integer array is:\n");
      for(int i=0;i<n;i++) printf("%d\t",b[i]);

}

posted @ 2020-12-01 00:17  empty_thought  阅读(69)  评论(0)    收藏  举报