#include <stdio.h>
int main()
{
int a[100],i,n,j,p;
printf("Enter number of elements:\n ");
scanf("%d",&n);
printf("Enter array:\n");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
for(j=1;j<n;j++)
{
if(a[i]>a[j])
{
p=a[j];
a[j]=a[i];
a[i]=p;
}
}
}
printf("The array looks :\n");
for(i=0;i<n;i++)
{
printf("%d\t",a[i]);
}
return 0;
}
除了最小的元素仍然是第一个之外,这工作顺利 :( 当我运行它时它没有错误,但是当我输入 ex. 1,2,3,4,5 的数字时结果是 1 5 4 3 2.
请让您的代码更有条理!
这是它的一个更简洁的版本:
#include <stdio.h>
void swap(int* a, int* b)
{
int t = *a;
*a = *b;
*b = t;
}
void selectionSort(int a[], int n)
{
int i, j;
for (i = 0; i < n; i++)
for (j = i + 1; j < n; j++)
if (a[i] > a[j])
swap(&a[i], &a[j]);
}
main()
{
int n;
printf("Enter the number of elements: ");
scanf("%d", &n);
int a[n], i;
printf("Enter the array:\n");
for (i = 0; i < n; i++) scanf("%d", &a[i]);
selectionSort(a, n);
printf("The array looks like this:\n");
for (i = 0; i < n; i++) printf("%d ", a[i]);
}
我是一名优秀的程序员,十分优秀!