从小到大给6个元素排序 a[N]={5,7,4,2,8,6 }
假设我们用变量k记下数组中最小数的位置,用变量m来存放这个最小数。且假设a[0]中的数最小。
5 7 4 2 8 6
k 开始k=0,m=5
5 7 4 2 8 6 m和a[1]比,k记下a[0]至[1]中最小元素的位置
k 这时k=0,m=5
5 7 4 2 8 6 m和a[2]比,k记下a[0]至[2]中最小元素的位置
k 这时k=2,m=4
5 7 4 2 8 6 m和a[3]比,k记下a[0]至[3]中最小元素的位置
k 这时k=3,m=2
5 7 4 2 8 6 m和a[4]比,k记下a[0]至[3]中最小元素的位置
k 这时k=3,m=2
5 7 4 2 8 6 m和a[4]比,k记下a[0]至[3]中最小元素的位置
k 这时k=3,m=2
5 7 4 2 8 6 m和a[5]比,k记下a[0]至[3]中最小元素的位置
k 这时k=3,m=2
代码
#include<stdio.h>
#include<stdlib.h>
void arrsort(int a[],int len)
{
int i,j,k,t;
for(i=0;i<len;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<len-1;i++)
{
k=i;
for(j=i+1;j<len;j++)
if(a[k]<a[j])
k=j;
if(k!=i)
{
t=a[j];
a[j]=a[k];
a[k]=t;
}
if (k!= i);
{
a[k]=a[i];
a[i]=t;
}
}
}
int main(int argc, const char * argv[])
{
int a[]={5,7,4,2,8,6} ;
int len = sizeof(a)/sizeof(int);
void arrsort(int a[],int len);
printf("未排序的数组: ");
for(int i=0;i<len;i++)
printf("%d",a[i]);
system("pause");
return 0;
}