选择排序需注意的点,供今后参考
基本思想是通过下标的方式访问比较数组成员大小。
设置两个循环变量,开辟一个变量空间用于记录每轮比较最值的下标用于交换。
内层循环结束后进行值的交换,将最值放在未排序的最左或最右侧。
注意下一轮内层循环开始前记录最值下标的变量要重新初始化一个未排序的新值。
#include<iostream>
using namespace std;
int main()
{
int a[10];
for(int i=0;i<10;i++)
{
cin>>a[i];
}
int i,j,max;
for(i=0;i<9;i++)
{ max=i;
for(j=i;j<10;j++)
{
if(a[j]>a[max])
{
max=j;
}
}
swap(a[i],a[max]);
}
for(int i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
注意如果没有进入内层循环前的max=i,则不能实现下一次排序
for(i=0;i<9;i++)
{ max=i;
for(j=i;j<10;j++)
{
if(a[j]>a[max])
{
max=j;
}
}
swap(a[i],a[max]);
}