黑马程序员技术交流社区
标题:
冒泡排序和选择排序的区别是什么?
[打印本页]
作者:
奋斗的蜗牛ksd
时间:
2014-11-5 12:51
标题:
冒泡排序和选择排序的区别是什么?
什么是冒泡排序和选择排序?他们的特点和区别是什么?
如果面试问到了,怎么
回答啊?
作者:
沈木生
时间:
2014-11-5 14:02
冒泡排序:0跟1比,1跟2比,2跟3比。。。n-1跟n 这样确定最大值为n角标
for()
选择排序:0跟1比,0跟2比,0跟3比。。。0跟n比 这样确定最小值为0角标
for()
作者:
kenhe
时间:
2014-11-5 14:47
每一轮都把最大或最小的元素筛选出来放在相应的位置上;但是对于每一轮,比如第一轮要把1~n 中最大的那个放到n这个位置,冒泡法每次比较和移动相邻的两项而选择排序每次交换当前项和第n项。
作者:
聪明叉
时间:
2014-11-5 16:10
选择排序是外循环角标依次和后面每一位进行比较;
冒泡排序外循环仅仅控制比较次数,内循环从0角标开始,相邻位置依次比较,比较完成后最值会后移到最后一位。
作者:
chuck_heima
时间:
2014-11-5 16:58
class PaiXuDemo
{
public static void main(String[] args)
{
int[] arr={5,8,9,6,5,2,1};
printArray(arr);
getSelectSort(arr);
//Array.sort(arr);
printArray(arr);
}
/*
最快的排序方法是:希尔排序
Array.sort(arr) 这个是Java自带的排序方法,
正式的程序开发时是用这个方法为数组排序。
Select :选择
Sort :排序
SelectSort:选择排序法
步骤:
1.定义一个嵌套循环
2.
3.
4.
选择排序
内循环结束一次,最值出现在头角标的位置上
按升序排序if(arr[x]>arr[y])
按降序排序if(arr[x]<arr[y])
其他代码不用改变
*/
public static void getSelectSort(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; */
swap(arr,x,y); //上面的三句话可以红这个swap函数替换掉
}
}
}
}
/*
发现无论什么排序,都需要对满足条件的函数进行位置置换
所以可以把进行位置置换的代码提取出来,单独封装成一个函数。
*/
public static void swap(int[] arr,int a,int b)
{
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
public static void printArray(int[] arra)
{
for(int x=0;x<arra.length;x++)
{
if(x!=arra.length-1)
System.out.print(arra[x]+",");
else
System.out.println(arra[x]);
}
}
}
作者:
chuck_heima
时间:
2014-11-5 16:59
class PaiXuDemo1
{
public static void main(String[] args)
{
int [] arr={5,9,2,6,8,7,88};
System.out.println("排序前");
printArray(arr);
getBubbleSort(arr);
System.out.println("排序后");
printArray(arr);
}
/*
Bubble:冒泡
Sort :排序
BubbleSort:冒泡排序
*/
public static void getBubbleSort(int[] arr)
{
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+1];
arr[y+1]=arr[y];
arr[y]=temp;
}
}
}
}
public static void printArray(int[] arra)
{
for(int x=0;x<arra.length;x++)
{
if(x!=arra.length-1)
System.out.print(arra[x]+",");
else
System.out.println(arra[x]);
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2