黑马程序员技术交流社区

标题: 冒泡排序这个 [打印本页]

作者: 许万里    时间: 2013-2-25 11:56
标题: 冒泡排序这个
如果  是    3  5   1  2   4  6  7
怎么就感觉   用 冒泡排序 的交换过程有点晕呀   谁给说下   交换过程     
作者: 吕振    时间: 2013-2-25 12:23
先从第一个数字开始比较,如果按从小到大比较的话。
第一二位比较有3512467;第二三位比较有3152467;第三四位比较有3125467;第四五位比较有3124567;第五六位比较有3124567;第六七位比较有3124567,这样最大的数字就放到了最后,因为过程中一直把较大的数放到后面位置。
再一次循环,第一二位比较有1324567;第二三位比较有1234567;第三四位比较有1234567;第四五位比较有1234567;第五六位比较有1234567;这样第二大的数字就放到了倒数第二的位置,因为过程中一直把较大的数放到后面位置。
以此类推...

作者: 戴鑫凯    时间: 2013-2-25 12:45
冒泡排序就是依此比较

3  5   1  2   4  6  7   

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

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

以此类推   

直到最后一次
作者: 贾文泽    时间: 2013-2-25 12:55
  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. }
复制代码
第一轮用第一个数跟第二个数比较,再用第二个数跟第三个数比较,接着第三个和第四个........一直到最后
第二轮.....
第三轮.....
作者: 生活墨墨    时间: 2013-2-25 13:49
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, 下载次数: 176






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2