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]+";");
}
}
/**
* 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;