java之冒泡排序与选择排序

package com.JUNE_Lion.Two;


/**
 * 5、用冒泡和选择两种方式对数组进行排序。
 * 
 * @author JUNE_Lion
 * 
 */
public class FineTest {

static int[] num = { 34, 453, 64, 12,  7, 56, 345, 73,7563, 1235, 897, 6654 };
static int temp = 0;

public static void main(String[] args) {
System.out.print("待排序数:");
for(int a = 0;a<num.length;a++){
System.out.print(num[a]+";");
}
oneMethods(num);
twoMethods(num);
}

    // 冒泡排序:相邻两个数互相比较(从小到大排序),每轮得到 第(length-i)大的数;
/*             34,453,64,12,7,56,345,73,7563,1235,897,6654; (length = 12)
* 第一轮(i=0):34,64,12,7,56,345,73,453,1235,897,6654,7563; (本轮比较11(length-1-i)次);
* 第二轮(i=1):34,12,7,56,64,73,345,453,897,1253,6654;      (本轮比较10(length-1-i)次);
* 第三轮(i=2):12,7,34,56,64,73,345,453,897,1253;           (本轮比较9(length-1-i)次);
* 第四轮(i=3):7,12,34,56,64,73,345,453,897;                (本轮比较8(length-1-i)次);
* 第五轮(i=4):7,12,34,56,64,73,345,453;                    (本轮比较7(length-1-i)次);
* 第六轮(i=5):7,12,34,56,64,73,345;                        (本轮比较6(length-1-i)次);
* 第七轮(i=6):7,12,34,56,64,73;                            (本轮比较5(length-1-i)次);
* 第八轮(i=7):7,12,34,56,64;                               (本轮比较4(length-1-i)次);
* 第九轮(i=8):7,12,34,56;                                  (本轮比较3(length-1-i)次);
* 第十轮(i=9):7,12,34;                                     (本轮比较2(length-1-i)次);
* 第十一轮(i=10):7,12;                                     (本轮比较1(length-1-i)次);
* 第十二轮(i=11):7;                                        (本轮比较0(length-1-i)次);
*/

public static void oneMethods(int[] num1) { 
   for(int i = 0;i<num.length-1;i++){          //比较 num.length-1轮;
    for(int j = 0;j<num.length-1-i;j++){    //每轮比较 num.length-1-i次;
    if(num[j]>num[j+1]){
    temp = num[j];
    num[j] = num[j+1];
    num[j+1]=temp;
    }
    }
   }
   System.out.println();
   System.out.print("冒泡排序:");
   for(int k = 0;k<num.length;k++){
    System.out.print(num[k]+";");
   }
}

    /* 选择排序:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,
     *           顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
/*             34,453,64,12,7,56,345,73,7563,1235,897,6654; (length = 12)
* 第一轮(i=0):7,453,64,34,12,56,345,73,7563,1235,897,6654; (本轮比较11(length-1-i)次);
* 第二轮(i=1):7,12,453,64,34,56,345,73,7563,1235,897,6654; (本轮比较10(length-1-i)次);
* 第三轮(i=2):7,12,34,453,64,56,345,73,7563,1235,897,6654;(本轮比较9(length-1-i)次);
* 第四轮(i=3):7,12,34,56,453,64,345,73,7563,1235,897,6654;(本轮比较8(length-1-i)次);
* 第五轮(i=4):7,12,34,56,64,453,345,73,7563,1235,897,6654; (本轮比较7(length-1-i)次);
* 第六轮(i=5):7,12,34,56,64,73,453,345,7563,1235,897,6654; (本轮比较6(length-1-i)次);
* 第七轮(i=6):7,12,34,56,64,73,345,453,7563,1235,897,6654;  (本轮比较5(length-1-i)次);
* 第八轮(i=7):7,12,34,56,64,73,345,453,7563,1235,897,6654; (本轮比较4(length-1-i)次);
* 第九轮(i=8):7,12,34,56,64,73,345,453,897,1235,7563,6654; (本轮比较3(length-1-i)次);
* 第十轮(i=9):7,12,34,56,64,73,345,453,897,1235,7563,6654;  (本轮比较2(length-1-i)次);
* 第十一轮(i=10):7,12,34,56,64,73,345,453,897,1235,6654,7563; (本轮比较1(length-1-i)次);
*/
public static void twoMethods(int[] num2) { 
int min_index;
for(int i = 0;i<num.length-1;i++){
min_index = num[i];   //默认数组第一个数为最小数;

for(int j = i+1;j<num.length;j++){
if(min_index>num[j]){
temp = min_index;
min_index = num[j];
num[j]=temp;
}
}
}
System.out.println();
System.out.print("选择排序:");
for(int k = 0;k<num.length;k++){
System.out.print(num[k]+";");
}


}


}


运行结果:

              待排序数:34;453;64;12;7;56;345;73;7563;1235;897;6654;
              冒泡排序:7;12;34;56;64;73;345;453;897;1235;6654;7563;
              选择排序:7;12;34;56;64;73;345;453;897;1235;6654;7563;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值