基本思想:
每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止。
算法实现:
每一趟通过不断地比较交换来使得首元素为当前最小,交换是一个比较耗时间的操作,我们可以通过设置一个值来记录较小元素的下标,循环结束后存储的就是当前最小元素的下标,这时再进行交换就可以了。
解题思路:
首先用min和i指向数组的首元素,j指向i的下一个元素,用j来遍历整个数组,依次与下标为min的元素作比较,如果min大,则将下标j赋值给min,第一趟循环过后,如果min和i的值发生改变,则交换两下标的元素,这样循环到i指向最后一个元素的时候,排序结束。
参考代码:
#include<iostream>
using namespace std;
int main()
{
int a[10];
int i,j;
int temp,min;
for(i=0;i<10;i++)
{
cin>>a[i];
}
for(i=0;i<10;i++)
{
min=i;
for(j=i+1;j<10;j++)
{
if(a[min]>a[j])
{
min=j;
}
}
if(min!=i)
{
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
}
for(i=0;i<10;i++)
{
cout<<a[i]<<endl;
}
system("pause");
return 0;
}
0.0分
1 人评分