黑马程序员技术交流社区
标题:
冒泡排序这个
[打印本页]
作者:
许万里
时间:
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
int[] arr={3,5,1,2,4,6,7};
for(int x=0; x<arr.length-1; x++){
for(int y=0; y<arr.length-x-1; y++){//-x:让每一次比较的元素减少,-1:避免角标越界。
if(arr[y]<arr[y+1]){
/*
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
*/
swap(arr,y,y+1);
}
}
}
复制代码
第一轮用第一个数跟第二个数比较,再用第二个数跟第三个数比较,接着第三个和第四个........一直到最后
第二轮.....
第三轮.....
作者:
生活墨墨
时间:
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
2013-2-25 13:49 上传
点击文件名下载附件
11.29 KB, 下载次数: 176
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2