首页 > 代码库 > 交换排序问题
交换排序问题
如果有个数组strs,我们怎样实现将它的数据从小到大排序.
1、以前我们解决过这种问题:找到数组的最小数据
//首先假设数组的第一项就是最小的,int min=strs[0];
for(int i=0; i<strs.Length; i++)
{
if(strs[i]>min)
{
//说明strs[i]是最小的项
Console.Write("strs[i]");
}
}
2、理解了上面这个问题,那么这道题的问题就好解决了。
重复动作:如果索引为0位置的数字比索引为j位置的数字大,就交换。
#1、j的范围(1--strs.Length-1)因为我们将第一项看做是最小的,那么我们就将后面的项与第一项比较并交换。
if(strs[0]>strs[j])
{
//交换位置
int temp =strs[0];
strs[0] =strs[j];
strs[j] =temp ;
}
//上面是完成了第一项的交换,其他项的交换,我们将strs[0] 看做strs[i](i的取值范围:0---strs.Length-2),为什么是倒数第二项呢,因为,我们交换到倒数第二项了,最后一项肯定是最大的数字了,所以就不需要交换了.
for(int i=0 ; i<=strs.Length-2 ;i++) //将比较排序问题
{
//这部分最要讲交换的问题
for(int j=i+1 ; j <=strs.Length-1 ; j++)
{
if(strs[i]>strs[j])
{
int temp =strs[i];
strsi] =strs[j];
strs[j] =temp ;
}
}
}
交换排序问题