选择排序也是一种对数据的排序方式,与冒泡排序不同,选择排序是从所有的数据中选出最小的或者是最大的放在第一位,把第二小的或第二大的放在第二位...依次这样进行。
#include<stdio.h>
int main()
{
int num = 10;//定义了排序数字的数量
int a[num];
for(int i=0;i<num;i++)
{
scanf("%d",&a[i]);//输入需要排序的数字
}
for(int i=0;i<num-1;i++)
{
int k = i;
for(int j=i+1;j<=num;j++)
{
if(a[j]<a[k]) k=j;
}
if(i != k)
{
int x = a[i];
a[i] = a[k];
a[k] = x;
}
}
for(int i=0;i<num;i++)
{
printf("%d ",a[i]);
}
}
下面对核心语句进行分析:
外层循环与我在冒泡排序中讲的那篇文章一样,最后的那一轮不需要进行比较,所以是num-1。然后定义k = i,用于设置一个比较的起始点。在内层循环中,我们对a[i+1]与a[i]进行比较,如果说这a[i+1]小于a[i]的话,那我们就就让k = i+1(即k = j),相当于一直在找一个最小的数。最后面,如果说最后面k != i的话,说明后面有比a[i]更小的数,即a[k],那么我们就对它们交换顺序,把更小的数提到前面...依次进行,达到排序效果。
for(int i=0;i<num-1;i++)
{
int k = i;
for(int j=i+1;j<=num;j++)
{
if(a[j]<a[k]) k=j;
}
if(i != k)
{
int x = a[i];
a[i] = a[k];
a[k] = x;
}
}
945

被折叠的 条评论
为什么被折叠?



