A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 许万里 中级黑马   /  2013-2-25 11:56  /  1375 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如果  是    3  5   1  2   4  6  7
怎么就感觉   用 冒泡排序 的交换过程有点晕呀   谁给说下   交换过程     

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

4 个回复

倒序浏览
先从第一个数字开始比较,如果按从小到大比较的话。
第一二位比较有3512467;第二三位比较有3152467;第三四位比较有3125467;第四五位比较有3124567;第五六位比较有3124567;第六七位比较有3124567,这样最大的数字就放到了最后,因为过程中一直把较大的数放到后面位置。
再一次循环,第一二位比较有1324567;第二三位比较有1234567;第三四位比较有1234567;第四五位比较有1234567;第五六位比较有1234567;这样第二大的数字就放到了倒数第二的位置,因为过程中一直把较大的数放到后面位置。
以此类推...

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
冒泡排序就是依此比较

3  5   1  2   4  6  7   

第一次比较长度-1次   也就是6次     结果是        1342467        把最小的一个弄到最前面了

第二次比较长度-1-1次   5次     因为第一个已经是最小的了  所以不用比较     结果是   1234467

以此类推   

直到最后一次
回复 使用道具 举报
  1. int[] arr={3,5,1,2,4,6,7};

  2. for(int x=0; x<arr.length-1; x++){                                                                       
  3.         for(int y=0; y<arr.length-x-1; y++){//-x:让每一次比较的元素减少,-1:避免角标越界。
  4.                        
  5.                 if(arr[y]<arr[y+1]){
  6.                         /*
  7.                         int temp = arr[y];
  8.                         arr[y] = arr[y+1];
  9.                         arr[y+1] = temp;
  10.                         */
  11.                         swap(arr,y,y+1);
  12.                 }
  13.         }
  14. }
复制代码
第一轮用第一个数跟第二个数比较,再用第二个数跟第三个数比较,接着第三个和第四个........一直到最后
第二轮.....
第三轮.....
回复 使用道具 举报
int[] arr={3,5,1,2,4,6,7};//数组
int intLen = arr.length; //数组的长度也就是个数
for(int x=0; x<intLen-1; x++){       //循环数组里面的元素                                                              
        for(int y=0; y<arr.length-x-1; y++){//循环比较,每个元素都会循环intLen次                        
                if(arr[y]<arr[y+1]){ //判断比较两个数的大小,就是循环的元素和后面的循环元素相比,如果为true,则替换,否则不替换
                        /*
                        int temp = arr[y];
                        arr[y] = arr[y+1];
                        arr[y+1] = temp;
                        */
                        swap(arr,y,y+1);
                }
        }
}

其实如果数组元素多的话,不建议用冒泡排序,因为冒泡排序太费时间和内存,每次判断都要判断很多次,不利于用户体验,而且速度也会拖慢。

我上传了一个附件,里面的排序方法或许会帮到你。

算法排序.rar

11.29 KB, 下载次数: 175

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马