`
leon.s.kennedy
  • 浏览: 111185 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics