随笔 - 0, 文章 - 75, 评论 - 0, 引用 - 0
数据加载中……

java冒泡排序和选择排序(面试题)

冒泡排序缺点:时刻比较,性能不好



冒泡排序特点:第一次循环结束,确定最大的在最后,以此类推


选择排序特点:第一次从R[0]~R[n-1]选最小值,与R[0]交换,以此类推


public class TextSort {



public static void main(String[] args) {
int[]
arrs={15,222,30,50,2,66};
System.out.println("排序前:");
for (int i = 0; i < arrs.length; i++) {
System.out.println(arrs[i]);
}

//选择排序
int out,in; //定义外层循环变量out和内层循环变量in
int min;
//定义最小值
for(out=0;out<arrs.length-1;out++){
//使用arrs.length-1 目的是不循环最后的数,


//因为子循环内,包含遍历最后一个数,省略一个判断步骤
min=out;
//假设最小数的索引为第out个
for(in=out+1;in<arrs.length;in++){
//内层循环从out+1开始
if(arrs[in]<arrs[min]){
//如果得到比arrs[min]还小的数
min=in;
//将比较小的数的索引,给min
}
}
if(min!=out){
//如果这个索引不是第out项(当前指定的最小数min=out)则交换,省略一个交换步骤
arrs[out]=arrs[out]+arrs[min];
//不用第三个变量实现交换
arrs[min]=arrs[out]-arrs[min];
arrs[out]=arrs[out]-arrs[min];
}
}



System.out.println("排序后:");
for
(int i = 0; i < arrs.length; i++)
{
System.out.println(arrs[i]);
}
}


}
--------------------------------------------


补充:


两个数值变换,不定义第三个变量,实现互换操作


int a=1;


int b=2;


a=a+b;


b=a-b; //获得a


a=a-b; //获得b


上述例子中:


可以不用min接收最小数


代码改为:


arrs[i]=arrs[i]+arrs[j];


arrs[j]=arrs[i]-arrs[j];
arrs[i]=arrs[i]-arrs[j];

posted on 2012-04-22 15:19 hantai 阅读(267) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: