黑马程序员技术交流社区
标题:
排序
[打印本页]
作者:
樱空之雪
时间:
2015-3-28 22:28
标题:
排序
冒泡排序,是怎么回事?
作者:
Hksangs
时间:
2015-3-28 22:46
多看看forfor嵌套循环,然后就能明白点
作者:
夜班心桥
时间:
2015-3-28 23:03
冒泡排序:就是紧挨着的两个元素进行比较,两者较大的赋给后者。这样第一轮结束后,数组的最后一个元素就是整个数组的最大值了,因此,在下一轮的比较中,最后一个元素不参与比较了。然后进行第二轮比较,依然从第一个元素开始,两两比较,值大的赋给后者,然后数组的倒数第二个元素就是第二大的了,一直这样比较下去。
举例:[3, 10 5, 4]
第一轮:3和10比较,10大,所以不用交换,继续比较10和5,进行交换,此时,数组变为【3, 5, 10, 4】,然后再将10和4比较,10大于4,所以继续交换,交换之后,变为:【3,5,4,10】第一轮结束。
第二轮:3和5比较,再比较5和4,交换,变为:【3,4,5,10】
第三轮:比较3和4,大的在后面,不用交换。结束比较,最终结果为:【3,4,5,10】
实现代码如下:
class BubbleSortDemo
{
public static void main(String[] args)
{
int[] arr = {3, 10, 5, 4};
bubbleSort(arr);
//打印结果
System.out.print("[");
for(int i=0; i<arr.length; i++)
{
if(i==arr.length-1)
System.out.println(arr[i] + "]");
else
System.out.print(arr[i] + ",");
}
}
private static void bubbleSort(int[] arr)
{
//外循环主要用于内循环里的控制条件
for(int i=0; i<arr.length; i++)
{
//内循环的控制条件:每一轮比较次数逐渐减1,用“-i”表示。
//减1是因为,数组的最大下标。
for(int j=0; j<arr.length - i -1; j++)
{
if(arr[j] > arr[j+1])
swap(arr, j, j+1);
}
}
}
//交换数组中i和j角标的元素
private static void swap(int[] arr, int i, int j)
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
复制代码
希望,能够帮助到楼主!
作者:
466273082
时间:
2015-3-28 23:11
可以多看看老毕视频呀
作者:
风飘逸
时间:
2015-3-28 23:20
冒泡排序就是像水泡从水底往上升,最上面的最大,所以排序的时候相邻的两个两两比较,就会把最大的排到最后面,以此类推。
作者:
lf027
时间:
2015-3-29 00:12
楼上都详细说名了,加油把少年
作者:
森森
时间:
2015-3-29 02:42
看看
作者:
青默
时间:
2015-3-29 07:52
概括的说就是一个数和相邻的进行比较,大的往后走,用for循环嵌套实现
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2