选择排序的勘误

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

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(numi)
{
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  阅读(94)  评论(0)    收藏  举报