选择排序的勘误
上次算法并不是本来的含义,特此修改,且这次算法对输出格式有比较麻烦的要求,代码较为繁琐
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]);
}

浙公网安备 33010602011771号