黑马程序员技术交流社区
标题:
数组排序问题
[打印本页]
作者:
追风筝的少年
时间:
2016-5-26 23:53
标题:
数组排序问题
冒泡排序和选择排序有什么区别?看了两三遍都没看出什么名堂,哪位大神给解答一下,谢谢了!
作者:
我love
时间:
2016-5-27 00:56
排序结果是一样的,但是实现过程不是一样的
冒泡排序是每次都是相邻的元素进行比较并且交换(如果让大的值往后走),这样一来,第一轮交换后,最大的值就出现在数组的最后面(也是索引最大处),然后进行第二轮比较,不过这次比较的话最后一个元素不用比较了,因为它已经是最大的,这样每轮比较就依次出现了倒数第二大,倒数第三大的元素,循环的轮数则是数组长度length-1.
而选择排序,则是每次都固定一个索引值,比如第一次是拿索引0出的比较,依次比较,如果谁最小,那么谁就占据索引0这个位置,然后继续索引值1的位置,依次循环
其实都是循环嵌套,你好好理解原理就很简单,话说冒泡真心经典有意思
作者:
wei19910428
时间:
2016-5-27 01:37
就是从小到达排序,一个是将最大值从后向前放,一个是将最小值从前向后放。可以改变索引可以从大到小排序
作者:
644313561
时间:
2016-5-27 20:25
选择排序
public static void selectSort(int[] arr)
{
for(int x=0;x<arr.length-1;x++)
{
for(int y=x+1;y<arr.length;y++)
{
if(arr[x]>arr[y])
{
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
}
冒泡排序
public static void bubbleSort(int[] arr)
{
for(int x=0;x<arr.length-1;x++)
{
for(int y=0;y<arr.length-1-x;y++)
{
if(arr[y]>arr[y+1])
{
int temp=arr[y];
arr[y]=arr[y+1];
arr[y+1]=temp;
}
}
}
}
排序方式不一样:
选择排序是某一个角标元素与后面角标元素依次比较,选取较小的值为该角标的元素,从前往后排
作者:
644313561
时间:
2016-5-27 20:27
冒泡排序是相邻两个角标元素比较,大的角标记录较大的值,从后往前排
作者:
My_Android
时间:
2016-5-27 20:28
区别还是很大啊。在多想想。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2