我经常在程序上遇到排序的问题,经常选择起泡法排序。其实,我也写过很多次,但每次需要真正用的时候,却经常会有些模糊,所以在这里将该方法记录下来,铭记,铭记!

     正常的起泡法排序算法如下:

     假设有一组数足

     int[] myArray = new int[10];

     //在这里假设已经给myArray赋值

     现在按从小到大进行排序:

    for(int i=0;i<myArray.length-1;i++)

   {

       for(int j=i;j<myArray.length;j++)

       {

           if(myArray[i]>myArray[j])

           {

                int midValue = myArray[i];

                myArray[i] = myArray[j];

                myArray[j] = midValue;

           }

      }

   } 

    通过以上方法,即可将myArray数组完成排序。

    有时候,我们也许需要对排序法进行改进,根据我们实际需求来实现排序。例如,在我的项目中,对用户数组根据userId属性按从小到大进行排序,以便于生成的用户下拉列表是按照一定顺旬进行加载的。

     //根据userId的值从小到大的顺序,对userIds和userNames数组重新排序

     int smallIndex;
     for(int i=0;i<recordNums-1;i++)
     {
      smallIndex = i;
      for(int j=i+1;j<recordNums;j++)
      {
       //if(userIds[i]>userIds[j])
       //{
        if(userIds[smallIndex]>userIds[j])
        smallIndex = j;
       //}
       
      }
      if(smallIndex!=i)
      {
       int midUserId = userIds[i];
       userIds[i] = userIds[smallIndex];
       userIds[smallIndex] = midUserId;
       string midUserName = userNames[i];
       userNames[i] = userNames[smallIndex];
       userNames[smallIndex] = midUserName;
       string midUserUnitName = userUnitNames[i];
       userUnitNames[i] = userUnitNames[smallIndex];
       userUnitNames[smallIndex] = midUserUnitName;
      }
      
     }