读书人

java冒泡排序跟选择排序

发布时间: 2012-11-01 11:11:32 作者: rapoo

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];

读书人网 >编程

热点推荐