黑马程序员——浅谈冒泡排序

来源:互联网 发布:相机sd卡数据丢失 编辑:程序博客网 时间:2024/05/12 11:01

---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------

在编写程序时,常常会用到排序来显示数据。可见排序的方法是程序必修的课程。排序的方法有很多种,百度一下你就知道。由于我还是处于菜鸟进级状态,因此只会大众化的冒泡排序。其它排序方法持续学习中……

冒泡排序:

    已知有一组无序数据int[] scores={25,12,45,85,40,12,56,20,92,17,6};共有11个数,需要将其按升序排列。首先比较scores[0]与scores[1]的值,若scores[0]大于scores[1]则交换两者的值,否则不变。再比较scores[1]与scores[2]的值,若scores[1]大于scores[2]则交换两者的值,否则不变。再比较scores[2]与scores[3],以此类推,这样处理一轮后,scores[10]的值一定是这组数据中最大的。再对scores[0]~scores[9]以相同方法处理一轮,则scores[9]的值一定是scores[0]~scores[9]中最大的。再对scores[0]~scores[8]以相同方法处理一轮,以此类推。共处理10轮后scores就以升序排列了。

由此可得出结论:需要进行的轮数(i)为数组的长度减去一 i=(scores.length-1)

                                每一轮需要两两相比较的进行次数(j)为数组的长度减去比较的轮数  j=scores.length-i

代码如下:

class 冒泡排序

{

     int[] scores={25,12,45,85,40,12,56,20,92,17,6};

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

    {

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

         {

               if(scores[j]>scores[j+1])

               {

                     int temp=scores[j];

                     scores[j]= scores[j+1];

                     scores[j+1]=temp;

              }

        }

    }

}

 

冒泡法口诀(升序排列):
N个数字来排队,两两相比小靠前;
外层循环N-1,内层循环N-1-i;

若需要降序排列,只需要把两两相比较的符号换成小于就行了

---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://net.itheima.com/

原创粉丝点击