首页 > 代码库 > 交换排序问题

交换排序问题

如果有个数组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 ;

     }

  }

}

 

交换排序问题