------- android培训、java培训、期待与您交流! ----------
冒泡排序和选择排序
冒泡排序(BubbleSort)的意思是,按照顺序依次将两个元素比较大小,按照要求把大数上浮或者下沉。每捋一次,就把选择到的最大的或者最小的放到底部了。有限次后,就把所有的数都按照一个方向排列整齐了。
1packageblog;23publicclasssortarray {45publicstaticvoidmain(String[] args) {6//定义一个数组7int[] shuzu={8,74,54,48,56,52,45,35,566,49};8//冒泡排序,外循环是数组的长度-1.两两比较,要翻转的次数是数组的长度-1个。9for(inti=0;i<shuzu.length-1;i++){10//内循环 因为是当前与后一个比较所以是length-1,整体翻i次,应该总次数-i。11for(intj=0;j<shuzu.length -i-1;j++){12if(shuzu[j]>shuzu[j+1]){13//交换两个数组变量14shuzu[j+1]=shuzu[j+1]^shuzu[j];15shuzu[j]=shuzu[j+1]^shuzu[j];16shuzu[j+1]=shuzu[j+1]^shuzu[j];17}18}1920}2122//遍历数组23for(inti : shuzu) {24System.out.PRintln(i);25}26}2728}
直接选择排序(Straight Select Sorting)的原理也很简单,就是第一遍把数组最小的值挑出来放到数组的第一个元素中,第二遍又把剩下的元素最小的放到第二个元素中。继续下去,有限次后。把数组里面的元素按照从小到达排列好了。
1packageblog;23publicclasssortjava2 {45publicstaticvoidmain(String[] args) {6//7int[] shuzu={8,74,54,48,56,52,45,35,566,49};8//直接选择排序,外循环是数组的长度-1.重复的次数应该是数组的长度-1。9for(inti=0;i<shuzu.length;i++){1011//内循环 要把未确定最小的数都再筛选一遍。所以次数应该小于数组长度-i。12for(intj=i+1;j<shuzu.length;j++){13if(shuzu[i]>shuzu[j]){14inta=shuzu[i];15shuzu[i]=shuzu[j];16shuzu[j]=a;17}1819}20}21//遍历数组22for(intc : shuzu) {23System.out.println(c);24}25}2627}
下面是练习输出一个空心菱形的代码:
1packagetest;23/**4* 内容是输出一个空心菱形5*@author瞎猫碰到死老虎6*7*/89publicclassLingXing {1011publicstaticvoidmain(String[] args) {12intn=15;13lingxing(n);1415}1617//输出一个n行的菱形18publicstaticvoidlingxing(intn){19//先输出上半部分20for(inti=0;i<n;i++){//输出n行21for(intj=0;j<n+i;j++){//每行打印n+i字符2223if(j==n+i-1||j==n-1-i){//如果是最后一个字符或对称的位置,则显示*号24System.out.print("*");25}else{26System.out.print(" ");27}2829}30System.out.println();31}3233//输出下部34for(inti=0;i<n-1;i++){//输出n-1行35for(intj=0;j<2*(n-1)-i;j++){//每行打印2*(n-1)-i个字符3637if(j==2*(n-1)-i-1||j==i+1){//如果是最后一个字符或对称的位置,则显示*号38System.out.print("*");39}else{40System.out.print(" ");41}4243}4445System.out.println();46}4748}49505152}
显示的结果为:
*
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
*